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.
"autoload": {
"psr-4": {
"Myks92\\User\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"Myks92\\User\\Tests\\": "tests/"
}
},
/**
* {@inheritdoc}
*/
public function rules()
{
return [
['status', 'default', 'value' => self::STATUS_ACTIVE],
['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],
];
}
.env
Как корректно перенести и настроить всю структуру на локальную машину? Или необходимо изначально инсталлировать текущую на production-сервере версию и на неё уже накатывать изменения?
<?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']);
}
$dto->name
вместо $items['name']
. Хотя, если вы используете шаблонизатор twig, — Вам особо без разницы. Но на PHP объекты (DTO) вам ещё и удобно будет использовать в редакторе.