У меня есть форма для входа в систему, в которой есть поля электронной почты и пароля. И у меня есть две кнопки отправки, одна для входа (если пользователь уже зарегистрирован), а другой для регистрации (для новых пользователей). Поскольку действия входа и действия регистра различны, поэтому мне нужно каким-то образом перенаправить запрос со всеми данными сообщения в соответствующее действие. Есть ли способ достичь этого в Laravel 4 в чистом Laravel пути?Laravel 4 - две кнопки отправки в одной форме и оба отправления обрабатываются различными действиями
Laravel 4 - две кнопки отправки в одной форме и оба отправления обрабатываются различными действиями
ответ
так, как я хотел бы сделать это
Если форма (2 кнопки):
{{ Form::open(array('url' => 'test/auth')) }}
{{ Form::email('email') }}
{{ Form::password('password') }}
{{ Form::password('confirm_password') }}
<input type="submit" name="login" value="Login">
<input type="submit" name="register" value="Register">
{{ Form::close() }}
Создать контроллер 'TestController'
Добавить маршрут
Route::post('test/auth', array('uses' => '[email protected]'));
В TestController у вас будет один метод проверки w Хич представить просматривались и два других методов для входа и регистрации
<?php
class TestController extends BaseController {
public function postAuth()
{
//check which submit was clicked on
if(Input::get('login')) {
$this->postLogin(); //if login then use this method
} elseif(Input::get('register')) {
$this->postRegister(); //if register then use this method
}
}
public function postLogin()
{
echo "We're logging in";
//process your input here Input:get('email') etc.
}
public function postRegister()
{
echo "We're registering";
//process your input here Input:get('email') etc.
}
}
?>
Спасибо ClickCoder, вы правы. Но любая идея, как передать входные данные в действие Restore store() Laravel без нарушения функциональности? –
Если я правильно понимаю, у вас уже есть postLogin и postRegister (или аналогичные методы), и вы просто хотите направить либо войти в систему, либо зарегистрироваться. 'Route :: пост ('тест/аутентификации', функция() { \t если (вход :: получить ('вход')) { \t \t $ действие = ''; postLogin \t} ElseIf (Input: : получить ('регистрация')) { \t \t $ ACTION = ''; postRegister \t} \t возвращение App :: сделать ('TestController') -> $ (ACTION); }); ' делает это Помогите? У вас будет весь вход в зависимости от того, какие контроллеры вы используете. – ClickCoder
Да, вы поняли это правильно. Это именно то, чего я хочу. Я попробую код, который вы дали, и дайте вам знать результат. Хотя, просто взглянув на код, я могу сказать, что это будет работать идеально. Спасибо :-) –
Вы можете сделать, как в следующем:
ваших маршрутов (routes.php):
Route::post('post1', array('before' => 'checkForm', 'uses' => '[email protected]'));
Route::get('post2', array('as' => 'post2', 'uses' => '[email protected]'));
filters.php
Route::filter('checkForm', function()
{
if(Input::has('button2')) {
return Redirect::route('post2')->withInput();
}
});
TestController.php
public function post1(){
return Input::all();
}
public function post2(){
return Input::old();
}
Форма: должно быть в вашем представлении. Однако, я создал временную форму в файле маршрута для этого ответа.
Route::get('form2', function()
{
return Form::open(array('url' => URL::to('post1'))).
Form::text('name', null).
Form::email('email', null).
'<button type="submit" name="button1" value="1">submit</button>'.
'<button type="submit" name="button2" value="2">submit2</button>'.
Form::close();
});
Теперь пролистать:
http://yourDomain/form2
Пожалуйста, обратите внимание: Я не уверен, что это правильный подход, чтобы позволить две кнопки отправки, но это работает для двух кнопок отправки.
Спасибо Анаму за объяснение в такой детали. Просто хотел знать, есть ли способ перенаправить на действие со всеми входами? –
вы можете перенаправить с 'withInput();'. После перенаправления вы можете получить все входы с помощью 'Input :: old();'. проверьте мой ответ, например. – Anam
Дайте кнопки отправки разных имен, например
<button type="submit" name="login">Login</button>
<button type="submit" name="signup">Signup</button>
В контроллере, просто обрабатывать Логин или регистрация в зависимости от того, какой кнопка была представлена , Вы все равно получите все свои входы, вы можете это сделать;
public function postLoginOrSignup(){
$data = Input::all();
if(isset($data['login'])){
//handle login process
}
if(isset($data['signup'])){
//handle singup process
}
}
Спасибо за быстрый ответ. Это отлично работает, но реальная проблема начинается здесь. Теперь желаемое действие можно вызвать, но тогда мне придется передать входные данные в качестве параметра для действия.Затем я должен изменить способ моего спокойного действия. Который я не хочу. Я хочу, чтобы Laravel restful store() действовал неповрежденно. Есть идеи ? –
Привет, извините, но я не совсем понимаю комментарий, можете ли вы продумать некоторые примеры того, чего вы не хотите и чего вы хотите достичь. – mandeeya
Проще говоря, есть ли способ передать вход в соответствующее действие? –
Мое решение:
первым я создал форму без каких-либо действий
<script>
var baseUrl = "{{ URL::to('/'); }}";
</script>
{{ Form::open(array('url' => '', 'id'=> 'test-form')) }}
{{ Form::text('username') }}
{{ Form::password('password') }}
{{ Form::password('confirm_password') }}
<input type="submit" name="login" id="login" value="Login">
<input type="submit" name="register" id="register" value="Register">
{{ Form::close() }}
для маршрутов (маршруты.PHP):
Route::post('test/login', array('uses' => '[email protected]'));
Route::post('test/register', array('uses' => '[email protected]'));
контроллер (TestController.php)
public function login(){
//do something...
}
public function register(){
//do something...
}
Jquery: (test.js) ответ
$('form :submit').on('click', function(event){
var a = $(this);
var form = $('form');
var action = a.attr('id');
form.attr('action', baseUrl + '/test/' + action);
form.submit();
});
вы экономите много времени! – HirenMangukiya
ClickCoder является спот-, единственное, что я бы заменить , чтобы сделать это на 100% «чистом Laravel», было бы использовать Form Builder для кнопок отправки.
http://laravel.com/docs/4.2/html#buttons
Первым параметром является значение представить, и вы можете передать его имя в следующем массиве опций.
Таким образом, вместо:
<input type="submit" name="login" value="Login">
<input type="submit" name="register" value="Register">
Вы бы:
{{ Form::submit('Login', ['name' => 'login']) }}
{{ Form::submit('Register', ['name' => 'register']) }}
Если вы хотите, вы могли бы избежать, если заявление вообще, имея их одни и те же имя и сделать что-то как это:
HTML:
{{ Form::submit('Login', ['name' => 'action']) }}
{{ Form::submit('Register', ['name' => 'action']) }}
PHP:
public function postAuth()
{
$action = 'post' . Input::get('action'); //becomes either postLogin or postRegister
$this->$action();
}
Немного меньше вложенности, немного больше Laravel!
Прохладное предложение, но это не работает так хорошо, если значение кнопки отправки более одного слова – zeckdude
- 1. Две кнопки отправки в одной форме с различными действиями
- 2. Laravel 4 две кнопки отправки
- 3. используя две кнопки отправки в одной форме
- 4. Две кнопки отправки на одной форме
- 5. Две кнопки в одной форме
- 6. Две кнопки в форме, Оба называются
- 7. две кнопки отправки на форме
- 8. Как разместить две кнопки отправки в форме
- 9. две кнопки отправки в одной форме в codeigniter
- 10. Rails: две разные кнопки отправки в форме
- 11. Возможно ли иметь две кнопки отправки в одной форме?
- 12. две кнопки отправки из одной формы laravel php
- 13. Две кнопки на одной форме в CodeIgniter
- 14. Два кнопки отправки в одной форме
- 15. две кнопки отправки в той же форме,
- 16. используя 2 кнопки отправки в одной форме
- 17. две кнопки действий на одной форме
- 18. Отключение одной кнопки отправки в форме с несколькими кнопками отправки
- 19. Angularjs Многие кнопки той же форме с различными действиями
- 20. Laravel 5.1 одна форма две кнопки отправки
- 21. Более одной кнопки отправки на форме
- 22. Возможно ли иметь две кнопки отправки в одной форме с разностными переадресациями в контактной форме 7?
- 23. Две кнопки отправки в одной форме. Может ли событие в функции отправки узнать, какой из них?
- 24. три кнопки отправки в одной форме html и mysql запросы
- 25. Две кнопки отправки в одной форме для одного метода POST/action
- 26. Как добавить две кнопки отправки в одной форме в Struts 2
- 27. Две разные кнопки отправки в форме CodeIgniter без Javascript
- 28. Разделите две кнопки отправки в форме с помощью javascript
- 29. Имея две кнопки отправки
- 30. Две кнопки отправки в одном состоянии
Дайте кнопкам отправки разные имена. –