我的路线和变量都有问题。我需要在一个foreach循环中将变量传递给路由。以下是“路由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;
}
}
发布于 2014-04-22 02:11:59
解决方案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>
重要事项:请记住在修改composer dump-autoload
文件后运行routes.php。
解决方案2
另一方面,您只需更改url生成方法并使用URL::to
即可。它需要一个包含路径的参数。
<a href="{{ URL::to('patientName/'.$patients->name) }}" class="view-profile">View Profile</a>
结论参考文档获取关于基于路由的不同安全url生成方法的详细信息。
http://laravel.com/docs/routing
还请确保检查URL助手文档以获得一些有用的内容。
https://stackoverflow.com/questions/23184568
复制