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/letsencryptlive/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