【问题标题】:Setting up Nested Resource Routes in Laravel在 Laravel 中设置嵌套资源路由
【发布时间】:2014-12-09 14:41:38
【问题描述】:

我正在我的应用程序中设置嵌套资源路由。目前,我有

// in app/routes
Route::resource("users.folders", "FolderController");

// in app/controllers/api/v2
class FolderController extends \BaseController {

    public function index($userId)
    {
        return Response::json( Sentry::getUser()->clients()->find($userId)->folders()->with("resources")->get() );
    }

    public function show($userId, $id)
    {
        if( $f = Sentry::getUser()->clients()->find($userId)->folders()->with("resources")->find($id) )
        {
            return Response::json( $f );
        }

        return Response::json(["status" => "Not Found"], 404);
    }

    // ...
}

我总是会以同样的方式加载用户,但总是写Sentry::getUser()->clients()->find($userId) 似乎是多余的。有什么方法可以在__construct 函数中加载正确的用户?

我很想做类似的事情

class FolderController extends \BaseController {

    public function __construct( $userId )
    {
        $this->user = Sentry::getUser()->clients()->find($userId);
    }

    public function index()
    {
        return Response::json( $this->user->folders()->with("resources")->get() );
    }

    public function show($id)
    {
        if( $f = $this->user->folders()->with("resources")->find($id) )
        {
            return Response::json( $f );
        }

        return Response::json(["status" => "Not Found"], 404);
    }

    // ...
}

但这会导致异常。

【问题讨论】:

    标签: php rest laravel routing controllers


    【解决方案1】:

    我不认为这是可能的,但您可以将此代码移动到功能:

    private function getUsers($id) {
       return Sentry::getUser()->clients()->find($userId);
    }
    

    现在在你可以使用的函数中:

    return Response::json( $this->getUsers($userId)->folders()->with("resources")->get() );
    

    【讨论】:

      猜你喜欢
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多