version: '2'
services:
proxy:
image: 'jwilder/nginx-proxy'
container_name: 'proxy'
ports:
- '81:80'
volumes:
- './nginx/vhosts:/etc/nginx/vhost.d'
- './nginx/config:/etc/nginx/conf.d'
- '/var/run/docker.sock:/tmp/docker.sock:ro'
- './nginx/certs:/etc/nginx/certs'
nginx1:
image: nginx
container_name: nginx-static
volumes:
- '../frontend:/usr/share/nginx/html'
environment:
VIRTUAL_HOST: lit.my
# networks:
# - proxy
nginx2:
image: nginx
container_name: nginx-php
volumes:
# - '../backend:/usr/share/nginx/html'
- './nginx/config.yii2:/etc/nginx/conf.d'
environment:
VIRTUAL_HOST: api.lit.my
links:
- php
volumes_from:
- php
php:
image: php:7.3-fpm
container_name: php
volumes:
- '../backend:/var/www/'
server {
charset utf-8;
client_max_body_size 128M;
listen 80;
#listen [::]:80 default_server ipv6only=on; ## listen for ipv6
server_name api.lit.my;
root /var/www/web;
index index.php;
location / {
# Redirect everything that isn't a real file to index.php
try_files $uri $uri/ /index.php$is_args$args;
}
#если хотите красивую страницу 404
#error_page 404 /404.html;
# deny accessing php files for the /assets directory
location ~ ^/assets/.*\.php$ {
deny all;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php:9000;
#fastcgi_pass unix:/var/run/php5-fpm.sock;
try_files $uri =404;
}
location ~* /\. {
deny all;
}
}
Обработчики в Цепочке обязанностей могут выполнять произвольные действия, независимые друг от друга, а также в любой момент прерывать дальнейшую передачу по цепочке. С другой стороны Декораторы расширяют какое-то определённое действие, не ломая интерфейс базовой операции и не прерывая выполнение остальных декораторов.
Из модели я обращаюсь к БД и получаю нужно значение, потом из контроллера передаю во вью и там уже делаю обработку и формирование HTML. Так ли это делается?
class MigrationWithDates extends Migrations{
public function createTable($tableNane, array $data){
$addDates = [
'created_by' => $this->integer()->null(),
'updated_by' => $this->integer()->null(),
'status' => $this->smallInteger()->notNull()->defaultValue(10),
'updated_at' => $this->integer()->notNull(),
'created_at' => $this->integer()->notNull(),
];
$mergedData = array_merge ($data, $addDates );
parent::createtable($tableName, $mergedData);
}
}
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} ^/(assets|css|js|images|storage)
RewriteRule ^assets/(.*)$ backend/web/assets/$1 [L]
RewriteRule ^css/(.*)$ backend/web/css/$1 [L]
RewriteRule ^js/(.*)$ backend/web/js/$1 [L]
RewriteRule ^images/(.*)$ backend/web/images/$1 [L]
RewriteRule ^storage/(.*)$ backend/web/storage/$1 [L]
RewriteRule ^(.*)$ backend/web/$1 [L]
RewriteCond %{REQUEST_URI} !^/
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ backend/web/index.php
</IfModule>
# use mod_rewrite for pretty URL support
Options -Indexes
RewriteEngine on
# If a directory or a file exists, use the request directly
#RewriteCond %{REQUEST_URI} ^/(storage)
#RewriteRule ^/storage/(.*)/documents/(.*)$ /storage/db/documents/$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php