@ImPuuLsE

Как создать UrlRule в Yii2?

Здравствуйте! имеется следующее правило, портированное из yii 1 приложения... переношу модуль на yii2...
class PageUrlRule extends Object implements UrlRuleInterface
{
    public $connectionID = 'db';
    public $urlSuffix    = '.html';

    public function createUrl($manager, $route, $params)
    {
        if($route==='pages/pages/view')
        {
            $url=trim($params['url'],'/');
            unset($params['url']);

            $parts=array();
            if(!empty($params))
            {
                foreach ($params as $key=>$val)
                    $parts[]=$key.'/'.$val;

                $url .= '/'.implode('/', $parts);
            }

            return $url.$this->urlSuffix;
        }
        return false;
    }

    public function parseRequest($manager, $request)
    {
        $pathInfo = trim($request->getPathInfo(), '/');
        $pathInfo = str_replace($this->urlSuffix, '', $pathInfo);
        
        if(Pages::find()->where(['url' => $pathInfo])->one())

        {
            $_GET['url'] = $pathInfo;
            return 'pages/pages/view';
        }

        return false;
    }
}

выдает ошибку:
d83d627e12694ec3ae442856e495c74a.PNG
Как быть?
  • Вопрос задан
  • 3794 просмотра
Решения вопроса 1
Prosto
@Prosto
В public function parseRequest($manager, $request)
вы возвращаете строку:
return 'pages/pages/view';

а должно быть что-то такое
return ['pages/pages/view', $params];

где в $params вы кладете что вам нужно
$params['id']=$page->id;
//или что вам там нужно
$params['url']=$page->url;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@michaelromanov90
Не нарадуюсь, что тостер существует! Этот пост очень помог)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы