2016-02-24 4 views
0

Я использую Laravel 5.2 и пытаюсь отправить форму в раскрывающемся списке. Хотя я могу это сделать. Но он всегда перенаправляется на функцию store, которая зарегистрирована как маршрут resource.Невозможно передать данные POST другому контроллеру, затем STORE в Laravel

Мой routes.php файл есть маршруты определить так:

Route::group(['middleware' => ['web']], function() { 

    Route::group(['middleware' => 'auth'], function() { 

     Route::get('dashboard', function() { 
      return view('dashboard.dashboard'); 
     }); 

     Route::get('getcurrency', '[email protected]'); <!--------This is where i have problem---------> 
     Route::resource('quotes','QuoteController'); 
    }); 

}); 

Я попытался назвать маршрут, а также. Но это всегда берут меня к store function

вот как мой выпадающий выглядит следующим образом:

<form method="post" action={{ action('[email protected]') }}> 
           <div class="form-group"> 
            <label class="control-label col-md-1">Name</label> 
            <div class="col-md-5">  
             <select class="form-control select2me selectCurrency" name="user_id" onchange="this.form.submit()"> 
              @foreach($users as $user) 
               <option value="{{$user->id}}">{{ $user->name }} 
                @if(!empty($user->companyname)) 
                 ({{$user->companyname }}) 
                @else 
                 ({{$user->email}}) 
                @endif 
               </option> 
              @endforeach 
             </select> 

            </div> 
           </div> 
</form> 

Я не мог понять, почему его всегда заставляют отправить значение store функции только, когда я даже попробовать к указанным route, method, url и action. Не работает система для меня.

Есть ли у laravel предопределенная тенденция использовать КНОПКУ SUBMIT только для определенной функции?

Вот что мой URL, когда у меня есть моя форма:

http://localhost/laravel/public/quotes

Кто-нибудь знает, почему это происходит? И как я могу это исправить?

Спасибо!

ответ

0

Route.php

ресурсов
Route::group(['middleware' => ['web']], function() { 

    Route::group(['middleware' => 'auth'], function() { 

     Route::get('dashboard', function() { 
      return view('dashboard.dashboard'); 
     }); 

     Route::post('getcurrency', '[email protected]'); // make it post instead of get 
     Route::resource('quotes','QuoteController'); 
    }); 

}); 

файл лезвие

<form method="post" action={{ url('getcurrency') }}> 
    <input type="hidden" name="_token" value={{ csrf_token() }}/> 
           <div class="form-group"> 
            <label class="control-label col-md-1">Name</label> 
            <div class="col-md-5">  
             <select class="form-control select2me selectCurrency" name="user_id" onchange="this.form.submit()"> 
              @foreach($users as $user) 
               <option value="{{$user->id}}">{{ $user->name }} 
                @if(!empty($user->companyname)) 
                 ({{$user->companyname }}) 
                @else 
                 ({{$user->email}}) 
                @endif 
               </option> 
              @endforeach 
             </select> 

            </div> 
           </div> 
</form> 
+0

Спасибо Haseena , но похоже, что я не могу перейти к функции 'getcurrency'. Все еще собирается 'хранить' – user3201500

+0

Эй еще одна вещь. У меня есть форма внутри формы. Это причина? – user3201500

+0

Вы можете попробовать использовать одну форму и проверить правильность работы? –

0

Если вы используете маршрут ресурс ваш пост будет идти автоматически в методе хранения более https://laravel.com/docs/5.2/controllers#restful-resource-controllers

Если вы хотите изменить способ затем изменить действие, как

<form method="post" action='quotes'> 

Затем нужно написать маршрут для этого URL перед маршрутом

Route::group(['middleware' => ['web']], function() { 

Route::group(['middleware' => 'auth'], function() { 

    Route::get('dashboard', function() { 
     return view('dashboard.dashboard'); 
    }); 

    Route::get('getcurrency', '[email protected]'); <!--------This is where i have problem---------> 
    Route::post('quotes','[email protected]'); 
    Route::resource('quotes','QuoteController'); 
}); 

}); 
+0

Ok я попробовал ваш метод. Но это дает эту ошибку. 'MethodNotAllowedHttpException в строке RouteCollection.php 219:' вы не думаете, что это должно быть Route :: post ('getcurrency', 'QuoteController @ getCurrency'); 'вместо кавычек? – user3201500

+0

в Route :: post вам нужно использовать полный url.Like, если ваш URL-адрес формы (кавычки/getcurrency), то ваш маршрут будет Route :: post ('quotes/getcurrency', 'QuoteController @ getCurrency') –

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