2014-04-20 33 views
0

我的路由和变量中存在问题。我需要将foreach循环中的变量传递给路由。这里是错误meesage“Route [patientName]未定义”。 这里是homepage.blade.php:Route [name]未在laravel 4.1中定义

@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}','[email protected]'); 

控制器

<?php 
class PatientsController extends BaseController{ 
    /*some functions*/ 
    function getPatientName($patientName){ 
     return $patientName; 
    } 
} 

回答

0

溶液1
URL::route生成一个链接到一个命名的路由 - 所以它期望一个路由的名字作为参数。在你的代码中,你没有指定你的路由名称,所以URL助手不能生成链接并抛出未找到路由的错误。检查下面

//routes.php - specify a route's name 
Route::get('patientName/{pname}', array('as'=>'patientName', 'uses'=>'[email protected]')); 

更正现在你可以放心地使用

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



结论 参考文档基于路线
http://laravel.com/docs/routing

在安全URL生成的不同方式的细节,此外,一定要查询的网址助手文档的一些有用的东西
http://laravel.com/docs/helpers#urls