Задать вопрос

Формирование урлов yii2?

Всем добрый вечер, заказчик ни с того ни с сего захотел изменить 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'));
  }
}


Вроде все сделала по примеру документации, но в итоге получаю ошибку
5cdaefb21ee3d525373330.png

Что я сделала не так?
Почему не передается параметр?
  • Вопрос задан
  • 81 просмотр
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
sireax
@sireax Автор вопроса
Решение нашла сама, нужно было поменять пространство имен с этого
use yii\base\Controller;

на это
use yii\web\Controller;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы