PasswordBrokerManager
со всеми сопутствующими классами — PasswordBroker
и TokenRepositoryInterface
, подменяешь и пользуешься. :options="{ scrollWheelZoom: false }"
@update:zoom="zoom = $event"
@wheel.native="onWheel"
methods: {
onWheel(e) {
if (e.deltaY < 0) {
this.zoom++;
e.preventDefault();
}
},
},
attributes: [], // наполняется посредством rest API
props: [ 'value' ]
; а при необходимости его обновить отдаёт наверх новый массив: this.$emit('input', this.value.map(...))
. Это позволит использовать на компоненте директиву v-model
: <attributes-list v-model="attributes" />
.document.getElementById(selector).checked = true;
$emit
:methods: {
update(attr, checked) {
this.$emit('input', this.value.map(n => n === attr
? { ...n, checked }
: n
));
},
},
<div v-for="n in value">
<input type="checkbox" :checked="n.checked" @input="update(n, $event.target.checked)">
<button @click="update(n, true)">Да</button>
<button @click="update(n, false)">Нет</button>
</div>
v-model
на чекбоксах, то можно собрать объект вида { 'имя/id/ещё что-то уникальное': checked }
и завернуть его в Proxy:computed: {
attributes() {
return new Proxy(Object.fromEntries(this.value.map(n => [ n.name, n.checked ])), {
set: (target, key, val) => {
this.$emit('input', this.value.map(n => n.name === key
? { ...n, checked: val }
: n
));
return true;
},
});
},
},
<div v-for="(v, k) in attributes">
<input type="checkbox" v-model="attributes[k]">
<button @click="attributes[k] = true">Да</button>
<button @click="attributes[k] = false">Нет</button>
</div>
- /etc/letsencrypt/live/domen.ru/:/etc/letsencrypt/live/domen.ru/
services:
nginx:
# ...
volumes:
# ...
- /etc/letsencrypt:/etc/letsencrypt
live/domen.ru
лежат не сами сертификаты, а линки на файлы двумя уровнями выше. Линки вы и видите, но указывают они на недоступные файлы. factory(Attribute::class)->create();
factory(Attribute::class)->create()->each(#...)
$attribute = factory(Attribute::class, 2)->create()->each(#...)
$attributes = factory(Attribute::class, 2)->create()->each(#...)
$attributes = factory(Attribute::class, 2)->create()->each(function (Attribute $createdAttribute) {
$createdAttribute->multiples()->createMany(factory(Multiple::class, $multiples_count)->raw());
});
$multiples_count = 5;
$attributes = factory(Attribute::class, 2)->create()->each(function (Attribute $createdAttribute) use ($multiples_count) {
$createdAttribute->multiples()->createMany(factory(Multiple::class, $multiples_count)->raw());
});
$multiples_count = 5;
$attributes = factory(Attribute::class, 2)->create()->each(function (Attribute $createdAttribute) use ($multiples_count) {
$createdAttribute->multiples()->createMany(factory(Multiple::class, $multiples_count)->raw());
});
foreach ($attributes as $attribute) {
$attribute->doSomeThing(); // Вот вам и ваш "контекст"
}
'testing' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'test_laravel-chat'),
'username' => env('DB_USERNAME', 'homestead'),
'password' => env('DB_PASSWORD', 'secret'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
]
<php>
<env name="APP_ENV" value="testing"/>
<env name="DB_CONNECTION" value="testing"/>
<env name="DB_DATABASE" value="test_laravel-chat"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
php artisan config:cache --env=testing
php artisan migrate --database testing