Size: a a a

2020 June 05

T

TradersVE in Yii Framework 3
when assets read the configuration they are not just paths.
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
Ну и опять же, не все там так просто, мы так прийдем к компайлер пасс.
Например ты команду создал и в контейнере ее нет, а тегируешь ты по принципу instanceof. В итогет тебе надо загрузить все классы, пройтись по ним и тегировать
compiler pass - это фу. бяка.
источник

T

TradersVE in Yii Framework 3
источник

AM

Alexander Makarov in Yii Framework 3
TradersVE
You can do it but you must order the dependencies, the positions, you lose all the automatic configuration.
Well, not really. Anyway. That's technical difficulty, not conceptual.
источник

Д

Дмитрий in Yii Framework 3
Alexander Makarov
compiler pass - это фу. бяка.
хорошо же)
источник

AB

Alexander Borisov in Yii Framework 3
Alexander Makarov
compiler pass - это фу. бяка.
обоснуйте
источник

Д

Дмитрий in Yii Framework 3
TradersVE
show your config please
источник

AM

Alexander Makarov in Yii Framework 3
Дмитрий
хорошо же)
Ужасно.
источник

T

TradersVE in Yii Framework 3
Alexander Makarov
Well, not really. Anyway. That's technical difficulty, not conceptual.
for me the assets as they are work well, can be integrated with webpack easily, or any other js tool, I would not change it, because changing yii to how symphony or laravel does, so I learn symphony, i dont not understant ?
источник

AM

Alexander Makarov in Yii Framework 3
Alexander Borisov
обоснуйте
Выполняется не то, что мы пишем. Без кеша нормально не работает. Иногда его абузят и получается компилирование PHP в PHP на PHP по 2 минуты (OroCRM). Дебажить ошибки в Compiler pass - ад.
источник

AM

Alexander Makarov in Yii Framework 3
У меня в Skyeng проект на Symfony 4 был, опыт всего этого есть.
источник

AM

Alexander Makarov in Yii Framework 3
В продакшне оно, в основном, показывает себя хорошо. Но при разработке создаёт проблемы.
источник

T

TradersVE in Yii Framework 3
Дмитрий
show your config please
"extra": {
       "branch-alias": {
           "dev-master": "3.0.x-dev"
       },
       "config-plugin-output-dir": "runtime/build/config",
       "config-plugin": {
           "common": "config/common.php",
           "params": [
               "config/params.php",
               "?config/params-local.php"
           ],
           "web": [
               "$common",
               "config/web.php"
           ],
           "console": [
               "$common",
               "config/console.php"
           ],
           "providers": "config/providers.php",
           "providers-web": [
               "$providers",
               "config/providers-web.php"
           ],
           "providers-console": [
               "$providers",
               "config/providers-console.php"
           ],
           "events": "config/events.php",
           "events-web": [
               "$events",
               "config/events-web.php"
           ],
           "events-console": [
               "$events",
               "config/events-console.php"
           ],
           "routes": "config/routes.php"
       }
источник

T

TradersVE in Yii Framework 3
Дмитрий
show your config please
<?php

declare(strict_types=1);

use App\Blog\Archive\ArchiveController;
use App\Blog\BlogController;
use App\Blog\CommentController;
use App\Blog\Post\PostController;
use App\Blog\Tag\TagController;
use App\Contact\ContactController;
use App\Controller\ApiInfo;
use App\Controller\ApiUserController;
use App\Controller\AuthController;
use App\Controller\SignupController;
use App\Controller\SiteController;
use App\Controller\UserController;
use App\Middleware\ApiDataWrapper;
use Yiisoft\Http\Method;
use Yiisoft\Router\Group;
use Yiisoft\Router\Route;
use Yiisoft\Yii\Web\Data\DataResponseFactoryInterface;
use Yiisoft\Yii\Web\Data\Middleware\FormatDataResponseAsJson;
use Yiisoft\Yii\Web\Data\Middleware\FormatDataResponseAsXml;

return [
   // Lonely pages of site
   Route::get('/', [SiteController::class, 'index'])
       ->name('site/index'),
   Route::methods([Method::GET, Method::POST], '/contact', [ContactController::class, 'contact'])
       ->name('site/contact'),
   Route::methods([Method::GET, Method::POST], '/login', [AuthController::class, 'login'])
       ->name('site/login'),
   Route::get('/logout', [AuthController::class, 'logout'])
       ->name('site/logout'),
   Route::methods([Method::GET, Method::POST], '/signup', [SignupController::class, 'signup'])
       ->name('site/signup'),

   // User
   Group::create('/user', [
       // Index
       Route::get('[/page-{page:\d+}]', [UserController::class, 'index'])
           ->name('user/index'),
       // Profile page
       Route::get('/{login}', [UserController::class, 'profile'])
           ->name('user/profile'),
       ]),

       // User
       Group::create('/api', [
           Route::get('/info/v1', function (DataResponseFactoryInterface $responseFactory) {
               return $responseFactory->createResponse(['version' => '1.0', 'author' => 'yiisoft']);
           })->name('api/info/v1'),
           Route::get('/info/v2', ApiInfo::class)
               ->addMiddleware(FormatDataResponseAsJson::class)
               ->name('api/info/v2'),
           Route::get('/user', [ApiUserController::class, 'index'])
               ->name('api/user/index'),
           Route::get('/user/{login}', [ApiUserController::class, 'profile'])
               ->addMiddleware(FormatDataResponseAsJson::class)
               ->name('api/user/profile'),
       ])->addMiddleware(ApiDataWrapper::class)->addMiddleware(FormatDataResponseAsXml::class),

       // Blog routes
       Group::create('/blog', [
           // Index
           Route::get('[/page{page:\d+}]', [BlogController::class, 'index'])
               ->name('blog/index'),
           // Post page
           Route::get('/page/{slug}', [PostController::class, 'index'])
               ->name('blog/post'),
           // Tag page
           Route::get('/tag/{label}[/page{page:\d+}]', [TagController::class, 'index'])
               ->name('blog/tag'),
           // Archive
           Group::create('/archive', [
           // Index page
           Route::get('', [ArchiveController::class, 'index'])
               ->name('blog/archive/index'),
           // Yearly page
           Route::get('/{year:\d+}', [ArchiveController::class, 'yearlyArchive'])
               ->name('blog/archive/year'),
           // Monthly page
           Route::get('/{year:\d+}-{month:\d+}[/page{page:\d+}]', [ArchiveController::class, 'monthlyArchive'])
               ->name('blog/archive/month')
       ]),

       // comments
       Route::get('/comments/[next/{next}]', [CommentController::class, 'index'])
           ->name('blog/comment/index'),
   ]),
];
источник

T

TradersVE in Yii Framework 3
@xepozz the problem is that it tries to serialize the file, and routes.php must be excluded, I understand that before it was not.
источник

Д

Дмитрий in Yii Framework 3
TradersVE
<?php

declare(strict_types=1);

use App\Blog\Archive\ArchiveController;
use App\Blog\BlogController;
use App\Blog\CommentController;
use App\Blog\Post\PostController;
use App\Blog\Tag\TagController;
use App\Contact\ContactController;
use App\Controller\ApiInfo;
use App\Controller\ApiUserController;
use App\Controller\AuthController;
use App\Controller\SignupController;
use App\Controller\SiteController;
use App\Controller\UserController;
use App\Middleware\ApiDataWrapper;
use Yiisoft\Http\Method;
use Yiisoft\Router\Group;
use Yiisoft\Router\Route;
use Yiisoft\Yii\Web\Data\DataResponseFactoryInterface;
use Yiisoft\Yii\Web\Data\Middleware\FormatDataResponseAsJson;
use Yiisoft\Yii\Web\Data\Middleware\FormatDataResponseAsXml;

return [
   // Lonely pages of site
   Route::get('/', [SiteController::class, 'index'])
       ->name('site/index'),
   Route::methods([Method::GET, Method::POST], '/contact', [ContactController::class, 'contact'])
       ->name('site/contact'),
   Route::methods([Method::GET, Method::POST], '/login', [AuthController::class, 'login'])
       ->name('site/login'),
   Route::get('/logout', [AuthController::class, 'logout'])
       ->name('site/logout'),
   Route::methods([Method::GET, Method::POST], '/signup', [SignupController::class, 'signup'])
       ->name('site/signup'),

   // User
   Group::create('/user', [
       // Index
       Route::get('[/page-{page:\d+}]', [UserController::class, 'index'])
           ->name('user/index'),
       // Profile page
       Route::get('/{login}', [UserController::class, 'profile'])
           ->name('user/profile'),
       ]),

       // User
       Group::create('/api', [
           Route::get('/info/v1', function (DataResponseFactoryInterface $responseFactory) {
               return $responseFactory->createResponse(['version' => '1.0', 'author' => 'yiisoft']);
           })->name('api/info/v1'),
           Route::get('/info/v2', ApiInfo::class)
               ->addMiddleware(FormatDataResponseAsJson::class)
               ->name('api/info/v2'),
           Route::get('/user', [ApiUserController::class, 'index'])
               ->name('api/user/index'),
           Route::get('/user/{login}', [ApiUserController::class, 'profile'])
               ->addMiddleware(FormatDataResponseAsJson::class)
               ->name('api/user/profile'),
       ])->addMiddleware(ApiDataWrapper::class)->addMiddleware(FormatDataResponseAsXml::class),

       // Blog routes
       Group::create('/blog', [
           // Index
           Route::get('[/page{page:\d+}]', [BlogController::class, 'index'])
               ->name('blog/index'),
           // Post page
           Route::get('/page/{slug}', [PostController::class, 'index'])
               ->name('blog/post'),
           // Tag page
           Route::get('/tag/{label}[/page{page:\d+}]', [TagController::class, 'index'])
               ->name('blog/tag'),
           // Archive
           Group::create('/archive', [
           // Index page
           Route::get('', [ArchiveController::class, 'index'])
               ->name('blog/archive/index'),
           // Yearly page
           Route::get('/{year:\d+}', [ArchiveController::class, 'yearlyArchive'])
               ->name('blog/archive/year'),
           // Monthly page
           Route::get('/{year:\d+}-{month:\d+}[/page{page:\d+}]', [ArchiveController::class, 'monthlyArchive'])
               ->name('blog/archive/month')
       ]),

       // comments
       Route::get('/comments/[next/{next}]', [CommentController::class, 'index'])
           ->name('blog/comment/index'),
   ]),
];
I will check it later. Please make issue
источник

T

TradersVE in Yii Framework 3
Дмитрий
I will check it later. Please make issue
👍😀
источник

AB

Alexander Borisov in Yii Framework 3
Alexander Makarov
В продакшне оно, в основном, показывает себя хорошо. Но при разработке создаёт проблемы.
это видимо прям очень специфичные юзкейсы. после того, как в симфони появились tagged_iterator компайлер пасы для пользователя уже и не нужны
источник

AB

Alexander Borisov in Yii Framework 3
@samdark стоит создать issue?
источник

АН

Александр Некрасов... in Yii Framework 3
@xepozz такое должно работать в конфиге ?  
   TranslatorInterface::class => new App\Factory\TranslatorFactory(
       $params['locale']['paths'],
       $params['locale']['fallback']
   ),
источник