ukryłem formularz w widoku dzięki "Yii::app()->user->isGuest" (które zwraca false gdy ktoś jest zalogowany).
Teraz problem jest następujący: Jeżeli ktoś mimo ukrycia formularza, wyśle $_POST z komentarzem to sypią się błędy, bo po stronie systemu nie ma żadnej blokady przeciw niezalogowanym użytkownikom. Gdyby dane formularza leciały przez kontroler Comments to za pomocą accessRules() bym to ustawił. Jednak leci to zupełnie inną drogą, której nie rozumiem i proszę o pomoc w tej sprawie.
Prawdopodobnie nie masz w formularzu zdefiniowanego parametru ‘action’ co sprawia, że formularz jest wysyłany do tej samej akcji kontrolera (np. Post/view) która jest dostępna dla wszystkich. Najlepiej jest wygenerować kontorler ‘CommentsController’, gdzie akcja ‘create’ jest zastrzeżona dla zalogowanych użytkowników. Ustawiasz wtedy ‘action’ formularza na ‘comments/create’. jeśli użytkownik nie jest zalogowany to zostanie przeniesiony do formularza logowania. Tyle, że po zalogowaniu powiniem przejść do akcji post/view a nie commentas/create ale to szczegół …można jeszcze treść formularza zapisać z zmiennej sesyjnej tak aby po zalogowaniu miał treść formularza a nie puste pole …Ale to już zależy jak chcesz to zrobić.
o dzięki za taki pomysł. myślę że dam radę to zrobić.
chcę, aby wcale nie wyświetlało formularza, tylko napis “zaloguj się, aby dodawać”
ale jakby ktoś próbował coś wysłać to właśnie odniosę go do formularza logowania. mam nadzieję że uda mi się jakoś przesłać id tego posta, najwyżej będę pytał znowu. Pozdro!
EDIT: Dałem id w input hidden, bo chyba nigdzie indziej on nie jest przekazywany. Myślałem tez aby umieścić go w adresie action formularza, ale tak jak jest wydaje mi się bardziej poprawnie.