2016-01-25 2 views
1

маршрут по умолчанию в Yii2 является @ app/controller/SiteController. но если я построю с начала.Yii2 изменить по умолчанию Маршрут к другому пространству имен

composer require yiisoft/yii2 

тогда я создаю мой собственный index.php и установить настроите для приложения

(new yii\web\Application($config))->run(); 

и приложение всегда пытаются локальной в defaultContoller в пространстве имен приложения. но если я поставлю SiteController в другое пространство имен. он дает мне ошибку 404,

index.php

require(__DIR__ . '/vendor/autoload.php'); 
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php'); 

$config = require(__DIR__ . '/repo/config/web.php'); 

(new yii\web\Application($config))->run(); 

web.php

'id' => 'repo', 
    'basePath' => dirname(__DIR__), 
    'controllerNamespace' => 'repo\\controllers', 
    'defaultRoute' => 'site/index', 

структура папок

/vendor 
-yiisoft 
/repo 
-config 
---web.php 
-controllers 
---SiteController.php 

SiteController.php

<?php 
namespace repo\controllers; 

use Yii; 
use yii\web\Controller; 

class SiteController extends Controller{ 

    public function actionIndex(){ 

    echo 'welcome to the site'; 

    } 
} 
?> 

Если я дам приложение/контроллеры пространства имен SiteController.php, он работает, но как только я верну его обратно в репо/контроллеры, он говорит, что страница не найдена.

ответ

1

yii\base\Application объект имеет общедоступное имущество controllerNamespace, по умолчанию app\\controllers, его необходимо изменить в соответствии с изменением пространства имен контроллера по умолчанию.

Добавьте это в приложении конфигурации:

[ 
    ... 
    'controllerNamespace' => 'app\\other\\namespace\controllers', 
    ... 
], 

По умолчанию маршрут site (для yii\web\Application), он может быть изменен таким же образом (defaultRoute собственности):

[ 
    ... 
    'defaultRoute' => 'otherDefaultRoute', 
    ... 
], 
+0

добавить его в конфигурационном файле, но все же получить 404. – tyan

+0

@tyan Пожалуйста, покажите приложение конфигурацию, структуру папок и коды контроллера. – arogachev

+0

обновить вопрос @argoachev – tyan

2

попробовать это в вас файл конфигурации:

'controllerNamespace' => 'newnamespace\controllers', 
 
'defaultRoute' => 'new/index',

+0

не работает. – tyan

1

Я нашел, что забыл определить корень псевдонима.

// $className is a fully qualified class name without the leading backslash 
$classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php'); 

поэтому, если я определяю корень псевдонима @repo в конфигурации. то он работает

'aliases' => [ 
    '@repo' => dirname(__DIR__), 
    ], 
Смежные вопросы