像在Laravel 5中一样,在Slim 3中创建带控制器的路径

时间:2015-12-19 15:33:24

标签: php slim slim-3

使用路由中的PHP框架Slim 3,我做到了这一点:

// In routes :
$app->get('article/{id}-{slug}', function ($request, $response, $args) {
    $class = new Site\ArticleController($args);
    $class->show();
});

// In controllers :
public function show($args)
{
    $sql = "SELECT * FROM articles WHERE id = $args['id'] AND slug = $args['slug']";
    // ...
}

在Laravel 5中,这个写得像:

// In routes :
Route::get('article/{id}-{slug}', 'Site\ArticleController@show');

// In controllers :
public function show($id, $slug)
{
    $sql = "SELECT * FROM articles WHERE id = $id AND slug = $slug";
    // ...
}

我们可以对Slim 3做同样的事吗?我的意思是:

$app::get('article/{id}-{slug}', 'Site\ArticleController@show');

1 个答案:

答案 0 :(得分:3)

你可以通过这样的方式构建类似于Laravel的Slim 3路线:

<?php
// In routes :
$app->get('article/{id}-{slug}', '\Site\ArticleController:show');

// In controllers :
public function show($request, $response, $args)
{
    $sql = "SELECT * FROM articles WHERE id = $args['id'] AND slug = $args['slug']";
    // ...
}

Slim路由器现在在第一个和第二个参数中传递$ request和$ response,然后在最后一个$ args中设置任何Route参数。

我希望这有帮助! :)