2013-11-14 5 views
0

У меня есть элемент в приложении CakePHP, в котором есть поля и кнопка. Я хочу использовать этот элемент для размещения на всех моих страницах и когда пользователь нажимает кнопку, чтобы перейти к тому же контроллеру и действию. Форма в элементе отлично работает для корневой страницы, но когда я нахожусь на другой странице и нажимаю кнопку, функция никогда не ударяется, а в адресной строке будет добавлен контроллер/функция.Форма заявки не работает

Элемент:

<form id="login-user" action="Login/doSomething" method="post"> 

     <input id="edit-submit-button" class="form-submit" type="submit" value="Log in" name="op"> </input> 
</form> 

мой контроллер:

class LoginController extends Controller{ 
    public $helpers=array('Js'=>array('Jquery'), 'Session'); 

    public function index() { 
     $this->autoRender = false; 
    } 

    function doSomething(){    
     $this->redirect("/"); 

    } 
} 

У меня есть этот элемент в файле Pages.ctp и в представлении. Когда я нажимаю кнопку, которая находится в файле Pages.ctp, страница перенаправляется на localhost/myApp/Login/doSomething, и функция получает очень просто. Но если элемент находится в представлении (localhost/myApp/somePage/view), и пользователь нажимает кнопку формы, страница перезагружается и добавляет «Login/doSomething» в конец адреса, но никогда не ударяет по этой функции.

У кого-нибудь есть идеи, как это исправить?

ответ

2

1) вы должны попытаться использовать FormHelper вместо того, чтобы писать его вручную

2) вы должны по крайней мере построить URL с CakePHP Helper или что-то

3) Ваша ссылка относительна - добавить / перед этим, и это, вероятно, сработает - если этого еще нет, то ваша ссылка просто неверна.

Пример:

<?php 
echo $this->Form->create('User', array(
    'url' => array(
     'controller'=>'users', 
     'action'=>'login' 
    ), 
    'id' => 'login-user' 
)); 
//... 
+0

Вы имеете в виду добавить «/» к действию, например «action =»/Login/doSomething »? Если это так, я пробовал это, и я просто получил ошибку 404. Я бы предпочел не делать этого с помощью помощника формы. Как создать URL-адрес с помощником? Благодаря! – jason

+0

@jason (см. Ответ) – Dave

+0

Спасибо за помощь. Я хотел сохранить регулярные формы и не использовать помощник формы по другим причинам, но это привело меня к решению.Я просто добавил действие с именем приложения (то есть:

) – jason

1

Вы должны изменить свои действия, чтобы включить контроллер + Action

Пример у вас есть:

<form id="login-user" action="Login/doSomething" method="post"> 

Если Войти Ваш контроллер он должен быть :

<form id="login-user" action="/Login/doSomething" method="post"> 

Но если ваш следующий MVC; Пользователь должен быть ваш контроллер Логин должен быть ваш метод, и вы, если вы используете CakePHP лучше следовать соглашению и использовать HTML Helper нем, ваш код выше:

<form id="login-user" action="Login/doSomething" method="post"> 

    <input id="edit-submit-button" class="form-submit" type="submit" value="Log in" name="op"> </input> 
</form> 

Должно быть:

<?php 
    echo $this->Form->create('User', array('id'=>'login-user', 'url'=>'/user/login')); 
    echo $this->Form->submit('Log In', array('class'=>'form-submit', 'id'=>'edit-submit-button')); 
    echo $this->Form->end(); 
?> 

при создании контроллеров, думать о себе .... Является ли это основной объект и его нужно несколько методов ...

Такие, как .... мне нужно пользователю для входа в систему, в CakePHP .. Пользователь должен быть контроллером с методом «login»

+0

Спасибо за помощь. Я хотел сохранить регулярные формы и не использовать помощник формы по другим причинам, но это привело меня к решению. Я просто добавил действие с именем приложения (то есть: ) – jason

 Смежные вопросы

  • Нет связанных вопросов^_^