Method Not Allowed (#405) в виджете Menu

Всё что касается построения API
Ответить
Tagir1111111111
Сообщения: 21
Зарегистрирован: 2016.01.07, 21:47

Method Not Allowed (#405) в виджете Menu

Сообщение Tagir1111111111 »

Код: Выделить всё

           NavBar::begin([
                'brandLabel' => 'Ilena Fox',
                'brandUrl' => Yii::$app->homeUrl,
                'options' => [
                    'class' => 'navbar',
                ],
            ]);
            $itemsInCart = Yii::$app->cart->getCount();
            $menuItems = [
                ['label' => 'Каталог', 'url' => ['/catalog/list']],
                ['label' => 'Моя корзина' . ($itemsInCart ? " ($itemsInCart)" : ''), 'url' => ['/cart/list']],
            ];
            if (Yii::$app->user->isGuest) {
                $menuItems[] = ['label' => 'Регистрация', 'url' => ['/site/signup']];
                $menuItems[] = ['label' => 'Войти', 'url' => ['/site/login']];                
            } else {
                $menuItems[] = [
                    'label' => 'Выход (' . Yii::$app->user->identity->username . ')',
                    'url' => ['/site/logout'],
                    'linkOptions' => ['data-method' => 'post']
                ];
            }
            echo Nav::widget([
                'options' => ['class' => 'navbar-nav navbar-right'],
                'items' => $menuItems,
        
            ]);
            NavBar::end();
        ?>
При нажатии Выход выдает ошибку Method Not Allowed (#405)

в контроллере

Код: Выделить всё

   public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'only' => ['logout', 'signup'],
                'rules' => [
                    [
                        'actions' => ['signup'],
                        'allow' => true,
                        'roles' => ['?'],
                    ],
                    [
                        'actions' => ['logout'],
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post'],
                ],
            ],
        ];
    }
если добавить

Код: Выделить всё

 'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post','get'],
                ],
            ],
то все работает. Это я сам решил прописать. Сработало но правильно ли я сделал?
Вопрос: почему раньше не было такой проблемы?
Проект yii2-shop с github. И что мнеяется при добавлении get запроса.
В инете покопался наткнулся на подобные проблемы
http://www.yiiframework.com/forum/index ... 05-solved/
http://stackoverflow.com/questions/2742 ... ogout-user
https://toster.ru/q/204731
Еще где то было в форуме не нашел
Tagir1111111111
Сообщения: 21
Зарегистрирован: 2016.01.07, 21:47

Re: Method Not Allowed (#405) в виджете Menu

Сообщение Tagir1111111111 »

Исправил

Код: Выделить всё

class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'public/css/bootstrap.min.css',
        'public/css/font-awesome.min.css',
        'public/css/prettyPhoto.css',
        'public/css/price-range.css',
        'public/css/animate.css',
    'public/css/main.css',
    'public/css/responsive.css',
    ];
    public $js = [
        'public/js/jquery.js',
    'public/js/bootstrap.min.js',
    'public/js/jquery.scrollUp.min.js',
    'public/js/price-range.js',
        'public/js/jquery.prettyPhoto.js',
        'public/js/main.js',
    ];
//    public $depends = [
//        'yii\web\YiiAsset',
//        'yii\bootstrap\BootstrapAsset',
//    ];
}
 
я раскаментировал

Код: Выделить всё

    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
    ];
 
Ответить