= Yii 2 Advanced Application Template = Generate models in ''common'' when shared between ''frontend'' and ''backend''. Eg: ''common/models/Content.php'': When creating a controller for frontend sharing common models, use this template (eg: ''frontend/controllers/ContentController.php'': load(Yii::$app->request->post())) { if ($model->validate()) { // form inputs are valid, do something here return; } } return $this->render('index', [ 'model' => $model, ]); } } Create view for frontend. Eg: ''frontend/views/content/index.php'':
field($model, 'title') ?> field($model, 'category_id') ?> field($model, 'hits') ?> field($model, 'rating_sum') ?> field($model, 'rating_count') ?> field($model, 'show_title') ?> field($model, 'show_intro') ?> field($model, 'show_image') ?> field($model, 'show_hits') ?> field($model, 'show_rating') ?> field($model, 'content_type_id') ?> field($model, 'featured') ?> field($model, 'ordering') ?> field($model, 'status') ?> field($model, 'created_by') ?> field($model, 'updated_by') ?> field($model, 'introtext') ?> field($model, 'fulltext') ?> field($model, 'publish_up') ?> field($model, 'publish_down') ?> field($model, 'created_at') ?> field($model, 'updated_at') ?> field($model, 'tags') ?> field($model, 'intro_image') ?> field($model, 'intro_image_float') ?> field($model, 'main_image') ?> field($model, 'main_image_float') ?>
'btn btn-primary']) ?>
== Links Between Frontend and Backend == === Link Using urlManager === To create links from the backend application to the frontend application, and vice versa, create separate URL manager rules by naming it differently: Eg: file ''backend/config/main.php'' return [ 'components' => [ 'urlManager' => [ // Modify current Yii::$app->urlManager. // Here is your normal backend url manager config. 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [] ], 'urlManagerFrontend' => [ // Create a new urlManager to point to frontend (Yii::$app->urlManagerFrontend). // Here is your frontend URL manager config. 'class' => 'yii\web\UrlManager', 'baseUrl' => 'a/frontend/web', 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [] ], ], ]; * Configure Apache to run with ''rewrite_module'' turned on. * Create ''.htaccess'' file. Create a ''.htaccess'' file in each ''web'' folders (''/frontend/web'' and ''/backend/web'') to contain this: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php After this, you can get an URL pointing. Eg: In a backend view, in order to link to frontend, use this: // Some route on frontend. echo Yii::$app->urlManagerFrontend->createUrl('customer/index'); // OR frontend baseUrl: echo Yii::$app->urlManagerFrontend->createUrl(''); === Link Using Global Variables === Add a ''$frontendUrl'' global variable to ''basic/config/params.php'' or ''common/config/params.php'': Simple add a key and value pairs: return [ ... 'frontendUrl' => 'http://www.example.com/frontend/web', ]; You can then use that variable anywhere in the system: params['frontendUrl'] ?>