Я реализую метод автоматического выхода (htmlentities) пользовательских данных перед возвратом. На данный момент у меня есть BaseModel, что все остальные модели унаследуют от, осуществляются следующим образом:Laravel автоматически избегает атрибутов модели
<?php
class BaseModel extends Eloquent
{
public function getAttribute($key)
{
$value = parent::getAttribute($key);
// Escape required fields when necessary
if (isset($this->escapable) && in_array($key, $this->escapable)) {
$value = e($value);
}
return $value;
}
public function attributesToArray()
{
$array = parent::attributesToArray();
if (isset($this->escapable)) {
array_walk($array, function (&$value, $key) {
if (in_array($key, $this->escapable)) {
$value = e($value);
}
});
}
return $array;
}
}
В самой модели я просто расширить BassModel вместо красноречивого и установить $escapable
массив во многом таким же образом, как и $fillable
приписывать
protected $escapable = [
'first_name',
'last_name',
/* etc */
];
Это работает 100% при извлечении отдельного атрибута - getAttribute($key)
- и при возвращении целой коллекции - attributesToArray()
, мой вопрос есть ли другие ситуации, я не приходился, которые могли бы позволить незаменяемым возвращаемым данные ? Я вижу, что в Model.php есть функция getAttributes()
, в каких ситуациях это будет вызвано?