У меня есть поле файла точно так, как this ссылка сказала в моем проекте, я поставил именно его код и изменить каждую вещь выглядит это, но когда я хочу это значение с помощью этого кода:Yii поле файла пусто
$uploadedFile = CUploadedFile::getInstanceByName($model,'image');
изображение пусто, и я получаю эту ошибку:
Illegal типа смещения в Исеть или пустой
Я видел, что Yii добавил два поля для файла в форме, а первый скрыт и пуст почему?
И я предполагаю, что Yii получил это как основное изображение, и поэтому он всегда пуст. Как я могу получить значение поля файла.
Единственным отличием является его использование CActiveRecord но я использую CFormModel beacuse я не имею базу данных в этом проекте.
Я могу получить доступ ко всем полям по $ model-> fieldname, но это поле пусто!
Отредактировано:
Я нахожу this учебник, но я не могу использовать его, потому что моя форма в контроллерах, просмотреть файл и получить много переменных из контроллера и это учебники форма кажется чистым:
$form = new CForm('application.views.fileUpload.uploadForm', $model);
Мое мнение:
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'contacts-form',
'enableAjaxValidation' => false,
'htmlOptions' => array('enctype' => 'multipart/form-data'),
)); ?>
<div class="fieldtext">
<div class="labelbox">
<?php echo $form->labelEx($model, Yii::t($this->language,'dialogboxname').":"); ?>
</div>
<?php echo $form->textField($model,'name',array('value'=>'aaa','size'=>10,'maxlength'=>50,'class'=>'inputbox')); ?>
</div>
<div class="fieldtext">
<div class="labelbox">
<?php echo $form->labelEx($model,Yii::t($this->language,'dialogboxemail').":"); ?>
</div>
<?php echo $form->textField($model,'email',array('value'=>'[email protected]','size'=>17,'maxlength'=>50,'class'=>'inputbox')); ?>
</div>
<div class="fieldtext subjectbox">
<div class="labelbox">
<?php echo $form->labelEx($model,Yii::t($this->language,'dialogboxsubject').":"); ?>
</div>
<?php echo $form->textField($model,'subject',array('value'=>'aaa','size'=>36,'maxlength'=>50,'class'=>'inputbox')); ?>
</div>
<div class="fieldtext bodybox">
<div class="labelbox">
<?php echo $form->labelEx($model,Yii::t($this->language,'dialogboxbody').":"); ?>
</div>
<?php echo $form->textArea($model,'body',array('value'=>'aaa','rows'=>6, 'cols'=>35,'class'=>'inputbox')); ?>
</div>
<div class="fieldtext bodybox">
<?php echo $form->labelEx($model,'image'); ?>
<?php echo $form->fileField($model, 'image'); ?>
</div>
<?php if(CCaptcha::checkRequirements()): ?>
<div class="captchabox fieldtext">
<div>
<?php echo $form->labelEx($model,Yii::t($this->language,'dialogboxconfirmcode').":"); ?>
<?php $this->widget('CCaptcha',array(
'showRefreshButton' => false,
'clickableImage' => true,
)); ?>
<?php echo $form->textField($model,'verifyCode',array('size'=>5,'maxlength'=>5)); ?>
</div>
</div>
<?php endif; ?>
<div class="contactbuttom">
<div class="submitcontactform buttomsize">
<?php echo CHtml::submitButton(Yii::t($this->language,'dialogboxsendbuttomn')); ?>
</div>
</div>
<?php $this->endWidget(); ?>
My Model:
<?php
class ContactForm extends CFormModel {
public $name;
public $email;
public $subject;
public $body;
public $image;
public $verifyCode;
/**
* Declares the validation rules.
*/
public function rules()
{
return array(
// name, email, subject and body are required
array('name, email, subject, body', 'required',
),
// email has to be a valid email address
array('email', 'email'),
array('image', 'file'),
}
public function attributeLabels()
{
return array(
'verifyCode'=>'Verification Code',
);
}
}
Мой контроллер:
...
$this->model= new ContactForm;
$model = $this->model;
if(isset($_POST['ContactForm']))
{
$model->attributes=$_POST['ContactForm'];
if($model->validate())
{
$name = $model->name;
$email = $model->email;
$subject = $model->subject;
$body = $model->body;
$uploadedFile = CUploadedFile::getInstanceByName($model,'image');
....
Забавно это проверить это правило, но сказал он пуст.
Пожалуйста, поделитесь своим видом кода? –
Я добавляю другое поле в мое мнение, как имя и адрес электронной почты, все как этот учебник. – Golix
Поделитесь всем своим кодом, и мы сможем помочь. – ShaunUK