public function actionLogin() {
return $this->render("landing");
// ......
return $this->render('landing', [
'model' => $model,
]);
}
echo FileInput::widget([
'name' => 'attachment_' . $id,
'options' => [
'multiple' => true
],
'pluginOptions' => [
'minFileCount' => 1,
'required' => true,
'deleteUrl' => Url::to(['ajax-cars/del-img-moderator']),
'initialPreview' => $initialPreview,
'initialPreviewConfig' => $caption,
'initialPreviewAsData' => true,
'showCaption' => false,
'showBrowse' => false,
'showRemove' => false,
'showUpload' => false,
'initialCaption' => "The Moon and the Earth",
'overwriteInitial' => false,
'fileActionSettings' => [
'showDrag' => false,
'showZoom' => false
]
]
])
'initialPreview' => $initialPreview,
'initialPreviewConfig' => $caption,
$initialPreview = [];
$caption = [];
foreach ($images as $image) {
$initialPreview[] = Url::toRoute($image->path . DIRECTORY_SEPARATOR . 'mini' . DIRECTORY_SEPARATOR . $image->title, true);
$caption[] = [
'key' => $image->id,
'extra' => [
'img' => [
'big' => $image->path . DIRECTORY_SEPARATOR . $image->title,
'small' => $image->path . DIRECTORY_SEPARATOR . 'mini' . DIRECTORY_SEPARATOR . $image->title
]
]
];
}
$this->registerJs('
var input = $("#uploadsfiles-imagesfile");
$("#uploadsfiles-imagesfile").on("filebatchselected", function(){
input.fileinput("upload")
})
var OtherActionButtons = "<button class=\"set-main btn btn-sm btn-kv btn-default btn-outline-secondary\" type=\"button\" {dataKey} title=\"Main photo\">";
OtherActionButtons += "<i class=\"fa fa-star\"></i>";
OtherActionButtons += "</button>";
OtherActionButtons += "<button class=\"set-main btn btn-sm btn-kv btn-default btn-outline-secondary\" type=\"button\" {dataKey} title=\"Left\">";
OtherActionButtons += "<i class=\"fa fa-undo\"></i>";
OtherActionButtons += "</button>";
OtherActionButtons += "<button class=\"set-main btn btn-sm btn-kv btn-default btn-outline-secondary\" type=\"button\" {dataKey} title=\"Right\">";
OtherActionButtons += "<i class=\"fa fa-repeat\"></i>";
OtherActionButtons += "</button>";
/* $(".btn-submit").on("click", function(){
var Text = $(".file-caption-name").val();
input.fileinput("upload");
if(Text == ""){
return false;
}
}) */
var funCi = $("#uploadsfiles-imagesfile").on("fileuploaded", function(event, data, previewId, index) {
input.fileinput("destroy").fileinput({
maxFileCount: 2,
validateInitialCount: true,
overwriteInitial: false,
required: true,
multiple: true,
/*showUpload: false,
showRemove: false,*/
initialPreviewAsData: true,
initialPreview: data.response.initialPreview,
initialPreviewConfig: data.response.initialPreviewData,
otherActionButtons: OtherActionButtons,
uploadUrl: "' . Url::to(['upload-img']) . '",
deleteUrl: "' . Url::to(['delete-img']) . '",
})
// setTimeout(function(){funCi}, 2500)
input.closest("form").find("button").attr("disabled", false)
console.log(data);
});
', View::POS_END);
'rules' => [
// если main у Вас контролер, а search действие
'' => 'main/index',
'<_a:(search)>/<request:\w+>' => 'main/search'
]
$query = Profile::find()
/* получаем все поля из таблицы профиля и считаем записи в таблице полисов */
->select(['{{%profile}}.*', 'count' => 'COUNT({{%policy}}.id)'])
/* подгружаем "не жадно" необходимые данные через связь getPolicy() */
->joinWith('policy', false)
/* группируем записи по id профиля */
->groupBy('{{%profile}}.id')
/* сортируем по количеству проданных полисов в порядке убывания */
->orderBy(['count' => SORT_DESC]);
$dataProvider = new ActiveDataProvider([
'query' => $query
]);
Примечание: Невозможно связать два свежесозданных объекта Active Record.
ModalAssets::register($this->getView());
в метод run();
public function init()
{
$this->sourcePath = __DIR__ . '/assets';
parent::init();
}
assets /* js and css */
view /* view widget */
ModalWidget.php
ModalAssets.php
public $js = [
'/js/modal.js'
]
[
'class' => 'yii\grid\ActionColumn',
'buttons' => [
'update' => function($name, $model, $key){
return Html::a('<i class="fa fa-plus fa-lg" aria-hidden="true"></i>', ['update']);
}
]
]
php yii serve
Server started on http://localhost:8080/
Document root is "/home/slonik/localhost/www/test.loc/yii2_test/web"
Quit the server with CTRL-C or COMMAND-C.
http://localhost:8080/index-test.php
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'' => 'site/index',
'<_a:(contact|about)>' => 'site/<_a>',
'<_a:(login|logout|sign-up)>' => 'users/<_a>',
'<_c:[-\w]+>/<_a:[-\w]+>' => '<_c>/<_a>',
'<_c:[-\w]+>' => '<_c>/index',
'<_a:(offline)>' => 'offline/index',
],
],
'urlManager' => [
'showScriptName' => true,
],
<?php
yii\widgets\Pjax::begin(['id' => 'new_note', 'enablePushState' => false]) ?>
<?= Html::beginForm(['/system/system/fastsearch'], 'post', ['data-pjax' => '1','enctype' => 'multipart/form-data', 'class'=>'form-inline' ]) ?>
<?= Html::input('text', 'search', "", ['class' => "form-control form-control-sm ml-3 w-75"]) ?>
<?= Html::submitButton('<i class="glyphicon glyphicon-search"></i> Найти', ['class' => 'btn btn-default', 'id'=>'press_search'])?>
<?= Html::endForm() ?>
<div id="reload-pjax"><?= $search ?? null ?></div>
<?php Pjax::end();
?>
public function actionFastsearch()
{
if(Yii::$app->request->isAjax){
$search = Yii::$app->request->post('search');
return $this->render('index', ['search' => $search]);
}
}
<?php
Pjax::widget([
'id' => 'reload-pjax',
'enablePushState' => false,
'enableReplaceState' => false,
'formSelector' => '#options-form',
'submitEvent' => 'submit',])
?>
<?= Html::beginForm(['/site/fastsearch'],
'post',
[
'class'=>'form-inline',
'id' => 'options-form'
]) ?>
<?= Html::input('text', 'search', "", ['class' => "form-control form-control-sm ml-3 w-75"]) ?>
<?= Html::submitButton('<i class="glyphicon glyphicon-search"></i> Найти', ['class' => 'btn btn-default', 'id'=>'press_search'])?>
<?= Html::endForm() ?>
<div id="reload-pjax"></div>
query = Yii::$app->db->createCommand("SELECT *, DATE_FORMAT(".Cars::tableName().".car_created_date,'%m') as mouth From `cars` WHERE `status` = 3 LIMIT 2")->queryAll();
Если провожу поиск, то контроллер закономерно ругается, что отсутствуют обязательные параметры: course_id.
Есть ли возможно сделать админа без заморочек
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=fedorov_shop',
'username' => 'fedorov_shop',
'password' => '***',
'charset' => 'utf8',
'enableSchemaCache' => true,
'schemaCacheDuration' => 3600,
]
php yii migrate --db=db
public function init()
{
$this->db = 'db2';
parent::init();
}
public function init()
{
parent::init();
Yii::$app->view->setAssetManager(new AssetManager());
}
composer dump-autoload
$baseUrlFrontend = str_replace('backend/web', '', (new Request)->getBaseUrl());
return [
'components' => [
'cache' => [
'class' => 'yii\caching\FileCache',
],
'urlManagerFrontend' => [
'class' => 'yii\web\UrlManager',
'baseUrl' => $baseUrlFrontend,
'enablePrettyUrl' => true,
'showScriptName' => false,
]
]
]
$img = (Yii::$app->urlManagerFrontend->createUrl( $model->images[0]['path'] . DIRECTORY_SEPARATOR . $model->images[0]['title']));
echo Html::img($img);
echo Html::img('@web/' . $model->images[0]['path'] . DIRECTORY_SEPARATOR . $model->images[0]['title']);