路径[名称]未在laravel 4.1中定义

时间:2014-04-20 16:04:29

标签: php variables laravel-4 laravel-routing

我的路线和变量中存在问题。我需要将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;
    }
}

1 个答案:

答案 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