Это мой первый и тестовый проект на laravel. Подскажите пожалуйста как можно можно вывести определенный атрибут в зависимости от локализации проекта на Laravel. Например умнея есть в базе данных таблица posts и в нем хранятся новости в двух языках: ['ru_title','en_title',''ru_description','en_description'] и есть глобальная самописная функция getLocale() которая возвращает "ru_" или "en_".
function getLocale($data,$table_name){
$locale=\App\Http\Middleware\LocaleMiddleware::getDBLocale();
if ($locale="ru_")
switch ($table_name) {
case 'name':
return $data->ru_name;
case 'description':
return $data->ru_description;
case 'include':
return $data->ru_include;
default:
return null;
}
else
switch ($table_name)
{
case 'name':
return $data->en_name;
case 'description':
return $data->en_description;
case 'include':
return $data->en_include;
default:
return null;
}
Пробовал сделать таким образам работает но это я думаю не правильный подход как и структура BD для мультиязычного сайта Или есть возможность в самой модели изменить название атрибута например protected $atributes=[getLocale(.'name'=>'name']
Подход примерно правильный, но всегда старайтесь гуглить готовые решения:
https://packagist.org/packages/spatie/laravel-translatable
Вот есть еще решения:
https://stackoverflow.com/questions/19088897/multilanguage-database-management-with-laravel
Но как по мне - увеличение таблицы в ширину за счет языков не лучшее решение. Я бы подумал о дополнительной таблице переводов.
Как вариант можно попробовать переписать метод __get у модели
class ModelName extends Model
{
public function __get($key)
{
$locale=\App\Http\Middleware\LocaleMiddleware::getDBLocale();
return $this->getAttribute($locale.$key);
}
***
}
И уже потом вызывать $modelName->description
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Перебираю массив на совпадения, те которые совпадают - удаляю
у меня есть корзина с товарами, я делаю проверку при добавлении товара на его наличие в корзине, если он существует - увеличивается количество...