Добрый день. Есть метод формы с валидацией: PHP: public $url; public $old_watermark; public $my_match; public $site_name; public function rules() { $this->siteMatch(); return [ [['url'], 'url', 'defaultScheme' => 'https'], ['url', 'match', 'pattern' => $this->my_match, 'message' => 'Некорректная ссылка'], ['old_watermark', 'integer'], ]; } Метод siteMatch() генерирует строку, относительно url которую ввели в форму. Как то так: PHP: if( $url !== false ) { $url = $url['url']; foreach($site as $key => $item) { if( stristr($url, $key) !== false) { $implode = implode("|", $item['type']); $suffix = $item['suffix']; $my_match = "/{$key}\.ru\/[a-z]+\/({$implode})\/{$suffix}/"; $site_name = $key; break; } } } $this->my_match = $my_match; Но проблема в том что я не знаю как передать это самое url в этот метод. Получается пост запроса еще не было .Подскажите откуда метод rules() берет url для проверки и как ее передать в метод?
я понял что нужен свой валидатор, как то так: PHP: public $url; public $old_watermark; public $site_name; public function rules() { return [ [['url'], 'url', 'defaultScheme' => 'https'], ['url', 'siteMatch'], ['old_watermark', 'integer'], ]; } Но он вообще игнорируется: PHP: siteMatch($attribute, $params) { $my_match = false; if($my_match === false) { $this->addError($attribute, 'Некорректная ссылка'); } }
[sarcasm]Никому не говори что было не так. Ведь ты уникален и твой опыт никому не пригодится![/sarcasm]
@artoodetoo отстань, я избавился от проблемы, а не решил ее --- Добавлено --- Поидее эта задача просто не решаема, ибо регулярка отправляется на клиент когда страница загружена. А не как я хотел, после того как пользователь ввел url. Там велосидеить ajax запрос бы пришлось.