Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 20.12.2017 09:06:22

Делаю валидность на введенный цвет и ошибка

Всем привет,

В Laravel 5 приложении при сохранении делаю валидность на введенный цвет в app/Http/Requests/UserProfilesRequest.php:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Request;

use App\UserProfiles;


class UserProfilesRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules(Request $request)
    {
        return UserProfiles::getValidationRulesArray( $request->get('id') );
    }
}


И на массив условий :

(
    ...
    [color] => required|regex:~^#(([0-9a-fA-F]{2}){3}|([0-9a-fA-F]){3})$~
    [background_color] => required|regex:~^#(([0-9a-fA-F]{2}){3}|([0-9a-fA-F]){3})$~
    ...    

   
   
Получаю ошибку:   

"message": "preg_match(): No ending delimiter '~' found",

Если проверить эту регулярку отдельно

        $ret= preg_match('~^#(([0-9a-fA-F]{2}){3}|([0-9a-fA-F]){3})$~', preg_quote ('#004300'), $matches, PREG_OFFSET_CAPTURE);
        echo '<pre>$ret::'.print_r($ret,true).'</pre>';
        echo '<pre>$matches::'.print_r($matches,true).'</pre>';

то работает нормально...

Не понимаю почему ошибка...

Если символ тильды заменить на “/”,  то ошибка:

ssage": "preg_match(): No ending delimiter '/' found",

Была мысль введенное значение при проверке обернуть в preg_quote - но не знаю а можно ли при использовании класса FormRequest обернуть введенное значение?


Или причина в ином ?

Спасибо !

Не в сети

Подвал раздела