我的路线和变量中存在问题。我需要将foreach循环中的变量传递给路由。这是错误消息“Route [patientName]未定义”。 这是homepage.blade.php:
@foreach($patientsList as $patients)
<tr>
<td>{{ $patients->name }}</td>
<td>{{ $patients->email }}</td>
<td>{{ $patients->address }}</td>
<td>{{ $patients->phone_number }}</td>
<td>{{ $patients->type }}</td>
<td><a href="{{ URL::route('patientName', array('pname' => $patients->name)) }}" class="view-profile">View Profile</a></td>
</tr>
@endforeach
routes.php文件:
Route::get('patientName/{pname}','PatientsController@getPatientName');
控制器
<?php
class PatientsController extends BaseController{
/*some functions*/
function getPatientName($patientName){
return $patientName;
}
}
答案 0 :(得分:0)
解决方案1
URL::route
生成指向命名路由的链接 - 因此它期望路由的名称作为参数。在您的代码中,您没有指定路由的名称,因此URL帮助程序无法生成链接并抛出路径未找到错误。检查下面的更正
//routes.php - specify a route's name
Route::get('patientName/{pname}', array('as'=>'patientName', 'uses'=>'PatientsController@getPatientName'));
现在你可以安全地使用
了<a href="{{ URL::route('patientName', array('pname' => $patients->name)) }}" class="view-profile">View Profile</a>
重要提示:请记住在修改routes.php文件后运行composer dump-autoload
。
解决方案2
另一方面,您可以更改生成网址的方法并使用URL::to
。它需要一个包含路径的参数。
<a href="{{ URL::to('patientName/'.$patients->name) }}" class="view-profile">View Profile</a>
的结论强>
有关基于路线的不同安全URL生成方式的详细信息,请参阅文档
http://laravel.com/docs/routing
另外请务必查看URL帮助文档以获取一些有用的东西 http://laravel.com/docs/helpers#urls