簡體   English   中英

使用Laravel RESTful控制器時優雅地處理缺少的參數

[英]Gracefully handling missing arguments when using Laravel RESTful Controllers

我正在學習Laravel,在處理遺漏的參數時遇到了問題,這里也對此進行了解釋 但是,解決方案主要針對命名路由,但使用的是RESTful控制器。

TL; DR是否有一些優雅的解決方案來處理給定控制器的所有方法上缺少的參數而無需命名每個方法?

路線

Route::controller('accounts', 'AccountsController');

控制者

這是一個示例控制器方法...“ example.com/accounts/profile/1”適用,但是“ example.com/accounts/profile /”(帶有或不帶有斜杠)將引發異常。 “ ErrorException:缺少AccountsController :: getProfile()的參數1”

public function getProfile($id)
{
    $account = DB::table('accounts')->where('id', $id)->first();
    $this->layout->content = View::make('account.profile', array('account' => $account));
}

一種嘗試的解決方案(無效)

我也嘗試過↓,這是另一個問題的前瞻性建議。 但是,它也不起作用。

public function getProfile($id = NULL)
{
    if ($id = NULL)
    {
        return Redirect::to('accounts');
    } else {
        $account = DB::table('accounts')->where('id', $id)->first();
        $this->layout->content = View::make('account.profile', array('account' => $account));
    }
}

其他解決方案(有效,但乏味)

我知道使用命名的路由(例如下面的)來覆蓋所有漏洞是可行的,但這似乎是一種不明智的解決方案! (尤其是考慮為我們計划使用的所有控制器命名所有路由的冗長乏味的過程)

Route::get('/accounts/profile', 'AccountsController@missingMethod');

所以....

你們怎么想 是否有一些優雅的解決方案來處理給定控制器的所有方法上缺少的參數而無需命名每個方法?

默認參數選項應該可以在php中出現較小且非常常見的未捕獲錯誤之外工作。.您在條件中使用賦值運算符。 采用

if($id == NULL)

代替

 if($id = NULL)

或者如果你喜歡

if(is_null($id) )

動態類型語言的悲劇之一。 使我更頻繁地得到我的認可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM