<?= Yii::$app->formatter->asHtml($model->content, [
'Attr.AllowedRel' => ['nofollow'],
'HTML.SafeObject' => true,
'Output.FlashCompat' => true,
'HTML.SafeIframe' => true,
'AutoFormat.AutoParagraph' => true,
'URI.SafeIframeRegexp' => '%^(https?:)?//(www\.youtube(?:-nocookie)?\.com/embed/|player\.vimeo\.com/video/)%',
]) ?>
composer —no-dev
composer —prefer-dist
->cache()
в запросе.$user = Profile::find()->where(["id" => $id])->cache(1000)->asArray()->one();
В других случаях запросы не кэшируются. Иногда, в настройках, устанавливают кэширование схемы: ...
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=****',
'username' => '****',
'password' => '****',
'charset' => 'utf8',
'enableSchemaCache' => false, // Если не нужно кэшировать вместо `true` поставить `false`
'schemaCacheDuration' => 3600,
'schemaCache' => 'cache',
],
...
php yii cache/flush-all
cache/flush Flushes given cache components.
cache/flush-all Flushes all caches registered in the system.
cache/flush-schema Clears DB schema cache for a given connection component.
cache/index (default) Lists the caches that can be flushed.
/**
* {@inheritdoc}
*/
public function rules()
{
return [
['status', 'default', 'value' => self::STATUS_ACTIVE],
['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],
];
}
<?php
declare(strict_types=1);
namespace frontend\bootstrap;
use Yii;
use yii\base\BootstrapInterface;
use yii\di\Container;
use yii\widgets\LinkPager;
/**
* @author Maxim Vorozhtsov <myks1992@mail.ru>
*/
class Bootstrap implements BootstrapInterface
{
/**
* @inheritDoc
*/
public function bootstrap($app)
{
/** @var Container $container */
$container = Yii::$container;
$container->set(LinkPager::class, [
'prevPageLabel' => false,
'nextPageLabel' => false,
'maxButtonCount' => 3,
]);
}
}
'container' => [
'singletons' => [
CheckAccessInterface::class => yii\rbac\DbManager::class,
IdentityInterface::class => function () {
return Yii::$app->user->getIdentity();
},
],
],
'bootstrap' => [
frontend\bootstrap\Bootstrap::class
],
<?php
declare(strict_types=1);
namespace frontend\widgets;
class LinkPager extends \yii\widgets\LinkPager
{
public $prevPageLabel = false;
public $nextPageLabel = false;
public $maxButtonCount = 3;
}
Yii::$container->set('yii\widgets\LinkPager', 'frontend\widgets\LinkPager');
php composer update
И все. Проект установлен. Но радоваться не стоит. Установленный композер на хостинге это не всегда счастье. Так какое установлен глобально, а у вас нет прав админа, то он может не позволять создавать временные файлы типа .cache и другие. Тут вам придётся изворачиваться и менять пути хранения таких файлов а composer.json разделе config. php composer.phar update
/**
* Class FileUploader
* @author Maxim Vorozhtsov <myks1992@mail.ru>
*/
class FileUploader
{
/**
* @var string
*/
private $basUrl;
/**
* FileUploader constructor.
* @param string $basUrl
*/
public function __construct(string $basUrl)
{
$this->basUrl = $basUrl;
}
/**
* @param UploadedFile $file
* @return File
* @throws Exception
*/
public function upload(UploadedFile $file): File
{
$path = $this->generateUrl();
$name = time() . '.' . $file->getExtension();
$fileName = $path . '/' . $name;
FileHelper::createDirectory($path);
$file->saveAs($fileName);
return new File($path, $name, $file->size);
}
/**
* @return string
*/
public function generateUrl(): string
{
return $this->basUrl;
}
/**
* @param string $name
*/
public function remove(?string $name): void
{
if (is_file($fileName = $this->generateUrl() . '/' . $name)) {
unlink($fileName);
}
}
}
'container' => [
'singletons' => [
FileUploader::class => static function () {
return new Myks92\Vmc\Event\Service\Uploader\FileUploader(Yii::getAlias('@staticRoot/origin/images/events'));
},
],
],
public function actionUploadPoster($id)
{
$event = $this->findModel($id);
$form = new Poster\Upload\Form();
$handler = Yii::createObject(Poster\Upload\Handler::class);
if (!$this->checker->allowEdit($event->getId())) {
throw new ForbiddenHttpException('Вам не разрешено производить данное действие!');
}
if ($form->load(Yii::$app->request->post()) && $form->validate()) {
$uploader = Yii::createObject(FileUploader::class);
$uploader->remove($event->getPoster());
$uploaded = $uploader->upload($form->poster);
$file = new Poster\Upload\File(
$uploaded->getPath(),
$uploaded->getName(),
$uploaded->getSize()
);
$handler->handle(new Poster\Upload\Command($event->getId()->getValue(), $file));
return $this->redirect(['view', 'id' => $event->getId()->getValue()]);
}
return $this->render('upload-poster', [
'model' => $event,
'posterForm' => $form,
]);
}
Возможно ли как-то настроить вход так, чтобы обновился только блок с комментариями? как при ajax...
public function actionLogin()
{
//your code for login
return $this->redirect(['profile', 'id' => $id, '#' => 'comment']);
}