Array
(
[url] => language/change
[language] => pl // lub en jezeli wybiore angielski
)
A te dolary, dlatego ze we wielu nowszych poradnikach widzialem, ze się je stosuje, aby wiedzieć, ze przechowuje ona jakiś element, pobrany za pomocą funkcji $. Podobnie do _ w metodach prywatnych w np. PHP
To teraz pytanie, skąd wiesz że setcookie się nie wykonało? Najlepiej zbadaj przez Firebuga/Dragonfly/whatever czy ciastko się ustawia.
W podpisie widzę Laravel; czy Ty czasem z niego tutaj nie korzystasz?
Ten dolar byłby logiczny gdyby przechowywał obiekt typu jQuery’owego; np listę elementów LI. Jak przechowujesz typy proste (int, string), nie ważne że pobrane za pomocą np. attr(), to konwencja myląca … i sądzę że przekonałbym każdego kodera w zespole. Podkreślenia w metodach prywatnych PHP się już podobno (w PHP5) nie stosuje; choć mi się to akurat podoba. W Pythonie chyba o stosują.
A spróbuj zrobić echo ‘cokolwiek’ po setcookie, bo jak zamykasz request bez body, to ciastko w przeglądarce może się nie odświeżać. W JS nie musisz tego odbierać, ważne żeby serwer coś wysłał.
Zatem problem znajduje się tam gdzie zwykle; pomiędzy krzesłem a monitorem. Albo nam czegoś nie piszesz, albo nie umiesz sprawdzić/zdiagnozować prostych rzeczy.
Jesteś pewny, że chcesz, aby ciastko było ustawione tylko dla obecnej ścieżki wraz z pod ścieżkami (/language/change/*)? Może ci się wydawać, że nie jest ustawione, bo część funkcjonalności, która z tego korzysta leży w innej gałęzi drzewa. Spróbuj ustawić je dla całej domeny i wtedy zobaczyć czy działa.
Ale czy ścieżka ma znaczenie przy odbieraniu ciasteczek w PHP. Szybkie testy wskazuję, że nie, choć od zawsze (nie pamiętam dlaczego) dopisuję ukośnik przy ustawianiu … pewnie się już kiedyś przejechałem :]