const STATUS_BLOCKED = 0;
const STATUS_ACTIVE = 1;
/**
* @return mixed
*/
public function getStatusName()
{
return ArrayHelper::getValue(self::getStatusesArray(), $this->status);
}
/**
* @return array
*/
public static function getStatusesArray()
{
return [
self::STATUS_ACTIVE => 'Активен',
self::STATUS_BLOCKED => 'Завершён'
];
}
$form->field($model, 'status')->dropDownList(ModelName::getStatusesArray())
'value' => Html::tag('span',
$model->getStatusName(),
['class' => 'label label-' . ArrayHelper::getValue([0 => 'danger', 1 => 'success'], $model->status)])
]
'enableAjaxValidation' => true
&& $model->validate()
public function init()
{
parent::init();
// Вариант 1
// Работает без компонента в конфигурации
// 'view' => [
// 'theme' => []
// ]
$theme = Yii::$app->request->get('theme');
if($theme){
$this->getView()->theme = Yii::createObject([
'class' => '\yii\base\Theme',
'baseUrl' => '@web/themes/'.$theme,
'basePath' => '@app/themes/'.$theme,
'pathMap' => ['@app/views' => '@app/themes/'.$theme],
]);
}
// Вариант 2
//Работает, если в конфигурации есть компонент без параметров
// 'view' => [
// 'theme' => []
// ]
Yii::$app->view->theme->basePath = '@app/themes/admin';
Yii::$app->view->theme->baseUrl = '@web/themes/admin';
Yii::$app->view->theme->pathMap = ['@app/views' => '@app/themes/admin'];
}
// Вариант 3
// устанавливает тему на лету
// вид ссылки
// <a href="themeswitch/theme=theme_name">theme_name</a>
//
public function actionThemeswitch($theme)
{
if($theme == 'default'){
Yii::$app->response->cookies->remove('theme');
return $this->redirect(['index']);
}
$options = ['name'=>'theme','value'=>$theme,'expire'=>time()+86400*365];
$cookie = new \yii\web\Cookie($options);
Yii::$app->response->cookies->add($cookie);
return $this->redirect(['index']);
}
public function beforeAction($action)
{
if (parent::beforeAction($action)) {
if (Yii::$app->request->cookies['theme']) {
$theme = Yii::$app->request->cookies->getValue('theme');
Yii::$app->view->theme = new \yii\base\Theme([
'pathMap' => ['@app/views' => '@app/themes/'.$theme],
'baseUrl' => '@web',
]);
}
return true; // or false if needed
} else {
return false;
}
}
use app\assets\PortfolioAsset;
$image = PortfolioAsset::register($this);
$theme = $this->theme;
echo Html::img($image->baseUrl.'/img/portfolio-1.jpg',
['alt' => '']);
public $sourcePath = '@app/themes/portfolio/assets';
$position=$_POST['position'] ? int()$_POST['position'] : '';
if "%PHP_COMMAND%" == "" set PHP_COMMAND=php.exe
if "%PHP_COMMAND%" == "" set PHP_COMMAND="C:\xampp\php\php.exe"
http://frontend
Вам надо сделать следующее:<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "C:\xampp\htdocs\yii2\frontend\web"
ServerName frontend
ServerAlias www.frontend
ErrorLog "logs/frontend-error.log"
CustomLog "logs/frontend-access.log" common
</VirtualHost>
127.0.0.1 frontend
http://frontend
.composer global require "fxp/composer-asset-plugin:^1.3.1"
cd C:\xampp\htdocs
composer create-project --prefer-dist yiisoft/yii2-app-advanced имя_директории_в_которую_хотите_установить
можно в контроллере написать rules UrlManager?
можно в модуле написать?
не хочу в конфиге написать....так как есть много похожие урл
'rules' => [
[
// правиля для модуля admin
'class' => 'yii\web\GroupUrlRule',
'prefix' => 'admin',
'routePrefix' => 'admin',
'rules' => [
'<_a:(login|logout)>' => 'user/users/<_a>',
'<_m:[\w\-]+>' => '<_m>/default/index',
'<_m:[\w\-]+>/<id:\d+>' => '<_m>/default/view',
'<_m:[\w\-]+>/<id:\d+>/<_a:[\w\-]+>' => '<_m>/default/<_a>',
'<_m:[\w\-]+>/<_c:[\w\-]+>/<id:\d+>' => '<_m>/<_c>/view',
'<_m:[\w\-]+>/<_c:[\w\-]+>/<id:\d+>/<_a:[\w\-]+>' => '<_m>/<_c>/<_a>',
'<_m:[\w\-]+>/<_c:[\w\-]+>/<_a:[\w\-]+>' => '<_m>/<_c>/<_a>',
'<_m:[\w\-]+>/<_c:[\w\-]+>' => '<_m>/<_c>/index',
],
],
// тут rules для остального сайта
],
Нормально скачались файлы только через архив и там есть папка vendor, но файл config/web.php нигде не найти.
php init
и какой именно ключ необходимо ввести
'cookieValidationKey' => '', // в кавычках вписываете ключ, какой пожелаете.
$form->field($model, 'sort')->dropDownList([1 => 'От дорогих', 2 => 'От дешёвых', 3 => 'По популярности', 4 => 'По названию'],
['prompt' => 'Сортировать'),
'onchange' => '
$.post(
"'.Url::toRoute('default/ajax').'", // путь к действию контроллера
{id : $(this).val()}, // значение выбранного элемента списка
function(data){
$("div#city").html(data) // получение результата и подстановка в указанный div
}
)
'])
public function actionAjax()
{
if(Yii::$app->request->isAjax){
// Тут выполняете запрос к базе и возвращаете результат работы запроса.
}
}
Yii::getAlias('uploads/product')
Yii::getAlias('@uploads/images/')
Yii::getAlias('@uploads') . '/images';
<source src="<?= Url::to('@web/uploads/video/' . $video) ?>"></source>
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} ^/.*
RewriteRule ^(.*)$ web/$1 [L]
RewriteCond %{REQUEST_URI} !^/web/
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ web/index.php
</IfModule>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
'baseUrl' => '/yii2basic'
namespace app\modules\main;
//use Yii;
use yii\base\BootstrapInterface;
class MainBootstrap implements BootstrapInterface
{
public function bootstrap($app)
{
$app->i18n->translations['modules/main/*'] = [
'class' => 'yii\i18n\PhpMessageSource',
'forceTranslation' => true,
'basePath' => '@app/modules/main/messages',
'fileMap' => [
'modules/main/module' => 'module.php'
]
];
}
}
namespace app\modules\main;
use Yii;
/**
* main module definition class
*/
class MainModule extends \yii\base\Module
{
/**
* @inheritdoc
*/
public $controllerNamespace = 'app\modules\main\controllers';
public static function t($category, $message, $params = [], $language = null)
{
return Yii::t('modules/main/' . $category, $message, $params, $language);
}
}
'app\modules\main\MainBootstrap',