2016-08-15 1 views
0

Я использую пакет HTMLPurifier for Laravel 5 для очистки поля ввода. В настоящее время мой store() метод таков:

public function store(Request $request) 
{ 
    // Some business logic goes here 

    $post = Post::create($request->all()); 

    // More business logic 
} 

и моя $request переменная содержит следующие:

{ 
    "_token": "zbyUnJuAbSliem40B6xjWJfGOayoFlRSVIvrDlDM", 
    "title": "Test Title", 
    "slug": "test-title", 
    "category_id": "1", 
    "tags": [ 
    "2" 
    ], 
    "body": "<p>Test body.</p>" 
} 

Как я могу использовать Purifier::clean() метод на $request переменной только для очистки $request->body элемент?

Если я использую Purifier::clean($request->all()) затем добавить <p> тег для всех элементов $request объекта, а затем только body элемент, как это:

{ 
    "_token": "<p>zbyUnJuAbSliem40B6xjWJfGOayoFlRSVIvrDlDM</p>", 
    "title": "<p>Test Title</p>", 
    "slug": "<p>test-title</p>", 
    "category_id": "<p>1</p>", 
    "tags": [ 
    "<p>2</p>" 
    ], 
    "body": "<p>Test body.</p>" 
} 

ответ

0

OK я получил ответ, это может быть сделано следующим образом:

public function store(Request $request) 
{ 
    // Some business logic goes here 

    $request->merge(['body' => Purifier::clean($request->get('body'))]); 
    $post = Post::create($request->all()); 

    // More business logic 
} 
0

Используйте метод merge по запросу:

$request->merge(['body' => Purifier::clean($request->get('body')]); 

Редактировать

I предназначенный для использования ->merge, а не ->replace в приведенном выше.

+0

Ваш метод удалит все атрибуты объекта '$ request', кроме только' $ request-> body'. Проверьте мой ответ, я думаю, что это будет решение. –

0

Вы можете попробовать это:

Purifier::clean($request->get('body')); 
2

В вашей Post модели, вы можете сделать следующее. ..

public function setBodyAttribute($value) 
{ 
    $this->attributes['body'] = Purifier::clean(request()->body); 
} 

Таким образом, вам не придется выполнять одну и ту же логику в любое время, когда вы создаете новую по ул.

+0

привет, будет ли ваш подход работать при массовом заполнении атрибутов, а не вручную их назначать? Возможно, laravel не вызывает тело $ model-> body = $ request-> при назначении массы, и ваш метод не будет работать? –

+0

Вы давно задали вопрос, но если некоторые придут сюда, это будет работать и с массовым заданием. Просто протестирован на L 5.6. Единственное, что я бы изменил в этом ответе, - это использовать '$ value' вместо' request() -> body'. Лично я не люблю использовать запросы в модели. –

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