2015-02-03 2 views
0

Я реализую метод автоматического выхода (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(), в каких ситуациях это будет вызвано?

ответ

0

Я думаю, что вы вполне можете сохранить эту реализацию.

getAttributes() только один раз используется только один раз, и это касается дел с моделями. Не нужно беспокоиться об этом.

Смежные вопросы