2013-10-18 75 views
0

我遇到了一些laravel 4路由反轉的問題。 基本上我有一個寧靜的控制器,需要反轉。互聯網上關於如何去做的信息很少,現有的都是關於laravel 3的(而且非常模糊)。我檢查了他們,他們在下面的代碼中提出了「案例1」,但這並沒有奏效。經過很多猜測和掙扎後,我發現「案例2」的作品。爲什麼案例1不起作用?我應該如何讓它工作?Laravel 4 URL ::操作不按預期工作

FooController.php

class FooController extends BaseController{ 
    public function getHello(){ 
    return View::make("bar"); 
    } 
} 

routes.php文件

Route::controller("foo","FooController "); 

bar.blade.php

{{URL::action('[email protected]')}}//Case 1: This doesn't work 

{{URL::action('[email protected]')}}//Case 2: This works 
+0

因爲當您調用操作時,您需要指定完整的控制器名稱和完整操作名稱。如果您定義了Route :: controller,並在地址欄中鍵入foo/admin-profile,它將自動響應'FooController @ getAdminProfile'。順便說一句,你可以使用'Route :: resource'來獲得一個資源'foo'的命名安靜路由。http://laravel.com/docs/controllers#restful-controllers –

回答

3

這些導致同一個控制器/動作畢竟...

// routes.php 
Route::get('foo/hello', 'as' => 'foo.hello', 'uses' => '[email protected]'); 

// Somewhere in your view, etc. 



{{ URL::to('foo/hello') }} 

{{ URL::action('[email protected]') }} 

{{ URL::route('foo.hello') }} 
+0

好的答案!我認爲,Xun想知道爲什麼他必須在動作中指定動詞(GET),即使他已經在routes.php中聲明控制器爲restful。我的觀點是,在這種情況下聲明'Route :: resource('Foo')'是最好的方法,因爲它將完全帶來命名路線和安寧行爲。 –

+0

是的,資源控制器畢竟是我的最佳選擇,總是同意你的看法! – Andreyco

+0

好的謝謝!我仍然不知道爲什麼教程不起作用,但我想我可以和動詞一起生活。 laravel(或PHP?)中的「魔術」前綴材料正在讓我瘋狂btw ...而且我認爲laravel確實需要更好的教程。 –