Laravel 5 - очистить определенные входные данные при проверке - PullRequest
0 голосов
/ 11 мая 2018

Можно ли санировать определенные входные данные (или до проверки)?

У меня есть следующие правила (как пример):

public function rules()
    {
        return [
            'name'        => 'required|min:3|max:255|string',
            'description' => 'string',
            'hours.*'     => ['required', new Hours],
        ];
    }

Я хочу санировать имя и описание , но я не очищаю часы .Можно ли это сделать при проверке, или мне нужно продезинфицировать после проверки и перед вставкой?

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

Единственный способ проверить вводимые данные - проверить его на стороне клиента.Так что, в основном, использую Javascript для проверки.Если пользователь по какой-то причине отключит Javascript, проверка вашего сайта будет работать.Также можно попробовать опубликовать данные асинхронно, например, с помощью Ajax, и незамедлительно вернуть сообщение об ошибке, если проверка не пройдена, такой подход будет на стороне сервера.

0 голосов
/ 11 мая 2018

проверить это:

web.php

Route::get('test/', 'TestController@test');

TestController класс:

<?php

namespace App\Http\Controllers;

use App\Http\Requests\PostRequest;
use App\Post;

class PostController extends Controller
{

    public function test(PostRequest $request)
    {
        dd($request->get('name'));
    }

}

PostRequest класс:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class PostRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        $this->sanitize();
        return [
            'name'=>'required',
            'description'=>'required',
            'description'=>'required',
        ];
    }

    public function sanitize()
    {
        $input = $this->all();



        $input['name'] = $input['name'].'some change';
        $input['description'] = $input['description'].'another change';

        $this->replace($input);
    }
}

Как видите, я определил метод с именем sanitize в PostRequest

Теперь, когда я задаю значение имени в URL-адресе * ali, но будет напечатано значение ali some change.

Вы также можете использовать пакет daylerees / sanitizer.

0 голосов
/ 11 мая 2018

Чтобы сделать это до проверки, исходное значение все еще будет в запросе .С мутаторами легко разобраться.

Вы можете использовать Eloquent Mutators для форматирования значений атрибутов в Eloquent Model до insert или update .

Чтобы определить мутатор, добавьте установить префикс и атрибут суффикс с именем атрибута.Например:

// Name mutator
public function setNameAttribute($name)
{
    $this->attributes['name'] = strtolower($name); // used strtolower just to show the mutation
}

// Description mutator
public function setDescriptinAttribute($description)
{
    $this->attributes['description'] = strtolower($description); // used strtolower just to show the mutation
}

Для получения дополнительной информации см. Документацию https://laravel.com/docs/5.6/eloquent-mutators#defining-a-mutator

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...