Сделайте CVarDumper::dump($model->image) после присвоения CUploadedFile::getInstance и посмотрите, что там хранится (по всей видимости, null [Null is returned if no file is uploaded for the specified model attribute.]).
if (!move_uploaded_file($_FILES['news']['tmp_name']['image'], 'C:/wamp/www/mysite/images/'.$_FILES['news']['name']['image'])) {
$res['msg'][] = 'Файл не удалось сохранить';
}
то всё в порядке, но хотелось штатным способом фреймворка
А Вы загляняти в искходники getInstance и все поймете сами что и как там сделано. Сразу большая часть вопросов отпадет.
Я просто когда то напоролся на эти грабли, расслабился и назвал поля для аплоада файла так как мне захотелось все равно форму генерировал не привязывая к модели… пол часа отдал так и не догнал в чем дело, полез в исходники метода 20 минут и все стало ясно
страдаете… в кукбуке написано по этому поводу: How to upload a file using a model, а если файл тупо не приходит на сервер и в форме стоит неверный enctype, тогда уж извольте:
if(!empty($model->image))
$model->image->saveAs('C:/wamp/www/mysite/images'.$model->image); // странное какое-то имя для сохранения
спасибо, я тут опять наткнулся на туже нулевую ошибку, когда отправлял форму но не указывал файл, немного полазив по форуму нашёл выход, надо делать так
таким образом определяем на наличие загружаемого файла, если нет то не загружаем
кстати тоже самое что привёл пример vamp
кстати, вот такой вопрос появился, может сглуплю скажу такое. Имеется две формы на разных страницах, одна полная форма к примеру текст,заголовок различные списки, чекбоксы и т.п. а на второй странице будет упрощённая форма только заголовок и текстовое поле.
Хотелось бы чтобы при отправки формы, проверялись поля что прописаны в rules() но и одновременно учитывались те поля, что передаются с формы. В данном случаи если я отправлю подробную форму, то всё нормально, а при упрощённой формы будет требовать указать поля которые прописаны в полной форме, но ведь в упрощённой форме их нет.
Тоесть смотреть не только по rules() но и учитывать те поля что передаются, если они отсутствуют, то по ним проверку не производить, такое возможно?
Это для того чтобы в некоторых местах хотелось не грузить всю форму со всеми полями, а изменить всего только пару полей.