2013-09-09 3 views
0

Мне сложно установить простые ссылки/действия.Laravel form action

На мой взгляд, индекс, у меня есть этот маленький вид, что я хочу, чтобы запустить действие getTest в ProjectsController, когда я нажимаю на кнопку:

{{ Form::open(array('action' => array('[email protected]', $project->id))) }} 
<button type="submit"><i class="icon-arrow-up"></i></button> 
{{ Form::close() }} 

Это функция getTest:

public function getTest(){ 
     echo "test"; 
     return 'test'; 
} 

Но это все еще вызывает ошибку "Array_combine(): Both parameters should have an equal number of elements".

Я пробовал сделать эту работу по маршруту. с помощью этой формы открыть вместо:

{{ Form::open(['method' => 'GET', 'route' => ['test_route', $project->id]]) }} 

И этот маршрут:

Route::get('projects/test', array('as' => 'test_route', 'uses' =>'[email protected]')); 

Но я до сих пор ту же ошибку. Я не могу найти хороший документ для маршрутизации/отправки для действий, которые не дают мне эту проблему. Я не вижу, что

ответ

0

Ваш маршрут не нужен параметр, поэтому я думаю, что этот код достаточно:

{{ Form::open(['method' => 'GET', 'route' => 'test_route']) }} 
+0

Я попытался удалить параметр, он работает, но теперь по неизвестной причине он продолжает ссылаться на мой viewController @ index view. – Felix4

0

Я считаю, что проблема заключается в добавлении параметров к действию, но не управление этими параметрами на ваших маршрутах, а также ваша функция getTest(), принимающая любые параметры. Еще одна проблема заключается в том, что вы устанавливаете свой маршрут как маршрут GET, но ваша форма будет использоваться POST.

В вашей форме было бы намного проще использовать Form::hidden('id', $project->id);. А затем в вашей функции getTest() вы можете получить переменную, используя $id = Input::get('id');. Вы также сможете использовать название своего маршрута в своей форме. Form::open(array('route'=> 'test_route', method=> 'get'));