之后我测试了我的开机也无法正常工作。
我的控制器看起来:
public function actionEntry() {
if (!Yii::app()->user->isGuest) {
$model = new TrackForm;
if (isset($_POST['TrackForm'])) {
$entry = new Track;
try {
$entry->product_image = $_POST['TrackForm']['product_image'];
$entry->product_image = CUploadedFile::getInstance($model, 'product_image');
if ($entry->save()) {
if ($entry->product_image) {
$entry->product_image->saveAs($entry->product_image->name, '/trackshirt/uploads');
}
}
$this->render('success', array('model' => $model));
// redirect to success page
}
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
} else {
$this->render('entry', array('model' => $model));
}
}
}
模型如下:
<?php
class Track extends CActiveRecord
{
public static function model($className=__CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return 'product_details';
}
}
我的观点看起来:
<?php
$form = $this->beginWidget('CActiveForm', array(
'id' => 'hide-form',
'enableClientValidation' => true,
'clientOptions' => array(
'validateOnSubmit' => true,
),
'htmlOptions' => array('enctype' => 'multipart/form-data'),
));
?>
<p class="auto-style2"><strong>Administration - Add New Product</strong></p>
<table align="center" style="width: 650px"><td class="auto-style3" style="width: 250px">Product Image</td>
<td>
<?php echo $form->fileField($model, 'product_image'); ?>
</td>
</tr>
</table>
<p class="auto-style1">
<div style="margin-leftL:-100px;">
<?php echo CHtml::submitButton('Submit New Product Form'); ?>
</div>
<?php $this->endWidget(); ?>
知道问题在哪里?我试图调试它,但每次返回Null。
感谢。
答案 0 :(得分:1)
我很惊讶你没有看到这样的错误信息:
<?php echo $form->activeFileField($model, 'product_image'); ?>
因为CActiveForm没有属于CHtml的方法activeFileField()
我认为你需要
<?php echo $form->fileField($model, 'product_image'); ?>
进行此更改后,我可以使用您的代码在我的服务器上上传文件,并在此处删除另一个右大括号:
// redirect to success page
/*}*/
} catch (Exception $e) {
(可能是您上传代码时剪切的产物)
答案 1 :(得分:1)
这个link可以帮助你。也可以转储CUploadedFile实例来检查发生了什么。
答案 2 :(得分:0)
请记住,CUploadedFile :: getInstance($ model,$ attribute)返回类型为CUploadedFile的对象。如果您只想将$ entry-&gt; product_image设为图像文件的名称,您可以执行以下操作:
$image = CUploadedFile::getInstance($model, 'product_image');
$entry->product_image = $image->name;