2014-01-12 3 views
0

[Решение в нижней части]Именованные параметры в поле зрения Laravel

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

preg_replace(): несоответствие параметров, шаблон является строкой, в то время как замена является массивом

routes.php

Route::get('/projects/{project_id}/canals/{canal_id}/damages', array('as' => 'listDamages', 'uses' => '[email protected]')); 

DamageController.php

public function listDamages($project_id, $canal_id){ 
     $damages = Canal::find($canal_id)->damages; 
     $canal = Canal::find($canal_id); 
     $project = Project::find($project_id); 
     return View::make('damages.list',array('damages' => $damages, 'canal' => $canal, 'project' => $project)); 
    } 

view.blade.php

/* Values are: 
$project->id = 71; 
$canal->id = 5103; 
*/ 

{{ Form::open(array('route' => array('listDamages',array('project_id' => $project->id,'canal_id' => $canal->id)), 'method' => 'get', 'class' =>'action-form')) }} 
<button type="submit" href="{{ route('listDamages',array('project_id' => $project->id,'canal_id' => $canal->id)) }}" class="small">Auswählen</button> 
{{ Form::close() }} 

Сгенерированный URL в форме должен выглядеть следующим образом:

/проекты/71/каналы/5103/повреждения

[РЕШЕНИЕ] Редактировать рабочий код view.blade.php

{{ Form::open(array('route' => array('listDamages', $project->id, $canal->id), 'method' => 'get', 'class' =>'action-form')) }} 
<button type="submit" href="{{ route('listDamages',array($project->id, $canal->id)) }}" class="small">Auswählen</button> 
{{ Form::close() }} 
+0

'Route :: получить ('/ проектов/{project_id}}/...' - дополнительные ''} ? – Vucko

+0

Исправлено, но результат остается неизменным:/ – lasagne

+0

@lasagne Вы не должны вставлять решение в вопрос, но согласитесь с ответом, который решает вашу проблему, для будущих читателей было бы яснее, если они смогут сразу заметить решение нужно было поймать редактирование –

ответ

1

Try:

echo Form::open(array('route' => array('listDamages', $project->id, $canal->id))); 

не тестировал выше, хотя. Во всяком случае, вы всегда можете пристроить URL, хотя вы потеряете преимущество названного маршрута:

echo Form::open(array('url' => 'projects/'.$project->id.'/canals/'.$canal->id.'/damages')); 
+0

Хорошо работает! спасибо :) – lasagne

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