Всем добрый вечер, заказчик ни с того ни с сего захотел изменить url вида
category/build в просто
build.
Естественно для этого нужно создать класс-обработчик.
namespace app\components;
use yii\web\UrlRuleInterface;
use yii\base\BaseObject;
use app\models\Category;
class CategoryManager extends BaseObject implements UrlRuleInterface
{
public function createUrl($manager, $route, $params)
{
return false;
}
public function parseRequest($manager, $request)
{
$alias = $request->getPathInfo();
$category = Category::find()->where(['alias' => $alias])->one();
if ($category != NULL) {
return [
'category/view',
[
'category' => $category
]
];
}else return false;
// return ($category)? ['category/view', compact('category')] : false;
}
}
В config/web.php добавила :
[
'class'=>'app\components\CategoryManager'
],
Ну и контроллер :
namespace app\controllers;
use app\models\{ Build, Category };
use yii\base\Controller;
use yii\web\NotFoundHttpException;
use Yii;
class CategoryController extends Controller
{
public function actionView(Category $category)
{
return $this->render('view', compact('category'));
}
public function actionIndex() {
$builds = Build::find()->all();
return $this->render('index', compact('builds'));
}
}
Вроде все сделала по примеру документации, но в итоге получаю ошибку
Что я сделала не так?
Почему не передается параметр?