Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
- Частично понятно, а вот про прокси-геттеры не ясно, видимо не дочитал
В документации про это явно не написано )
Смысл в том, что ты у объекта объявляешь свойства которых у него нет через $appends и через акксесор получаешь данные из связанной таблицы. В результате ты работаешь с desc & name как будто свойство самого объекта, не заморачиваясь что в действительности они в другой таблице. Сделать можно в виде трейта. Текущий код менять не придется. Так что лучше не заморачиваться дублированием данных во вторую таблицу.
class TextData extends Models {
public function paramable()
{
return $this->morphTo();
}
}
class Page extends Model {
protected $appends = ['name', 'desc'];
public function param() {
return $this->morphMany(TextData::class, 'paramable');
}
public function getNameAttribute()
{
return $this->param->name;
}
public function getDescAttribute()
{
return $this->param->desc;
}
}
https://laravel.com/docs/5.4/eloquent-relationships#polymorphic-relations
https://laravel.com/docs/5.4/eloquent-mutators
Как вариант — поля name & desc вынести в отдельную таблицу (и модель), которая будет связана с остальными полиморфной связь.
Тогда можно будет искать по одной таблице, легко можно будет получать объекты разных типов и не надо будет следить за синхронизацией таблицы для поиска.
А для основных таблиц можно будет сделать прокси-геттеры для получения нужных данных из полей name & desc.
Тебе не нужно делать это в файле database.php.
Текущий значения конфига, которые первоначально были установлены из database.php можно менять по ходу выполнения кода. Например из той же мидлвари.
config(['app.timezone' => 'America/Chicago']);
https://laravel.com/docs/5.4/configuration#accessing-configuration-values
Сделать свой декоратор над вью, который будет не отдавать шаблон напрямую в клиент,а сперва его брать из View в переменную, потом обрабатывать и потом отдавать.
Или сделать хелпер, по типу assest, который будет генерировать урл в соответствие с твоими требованиями. Если тебе это нужно только для того что ты описал, то второй способ лучше.
- Как в форме динамически показывать какие-то поля в зависимости от значения другого поля селектора.
- Как проверять правильность всей формы на клиенте.
- Как в фильтре динамически скрывать и добавлять поля фильтра.
Это все не зона ответсвенности Лары, так как делается на стороне клиента. Можно на том же jQuery
Самый простой вариант - в мастер-шаблоне пишешь
<script>
var xxx = '{{ $xxx }}';
var yyy = '{{ $yyy }}';
</script>
Теперь js-переменные xxx & yyy будут в глобальной области видимости и доступны из любого скрипта, который подключен к странице.