2

フォームがあり、ファイルをアップロードしたいと考えています。ここに私のコードがあります:

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
   'id'=>'show-form',
   'enableAjaxValidation'=>false,
       'htmlOptions' => array('enctype' => 'multipart/form-data'),

)); ?>

<fieldset>
    <legend>DATI TECNICI</legend>

        <div class="row">
           <?php echo $form->labelEx($model,'tec_data_file'); ?>
           <?php echo $form->fileField($model,'tec_data_file',array('size'=>45,'maxlength'=>45)); ?>
           <?php echo $form->error($model,'tec_data_file'); ?>
        </div>
</fieldset>
<?php $this->endWidget(); ?>

</div><!-- form -->

送信後、データベースには何も追加されませんでした。firebug を使用して少しデバッグしたところfilefield、次のようなコードが生成されることがわかりました。

<input id="ytShow_tec_data_file" type="hidden" name="Show[tec_data_file]" value="">
<input id="Show_tec_data_file" type="file" name="Show[tec_data_file]" maxlength="45" size="45">

$_POSTそして2つのデータがforによって送信されtec_data_fileます(これはdbの私のファイルフィールドです)。最初の var は空です (最初の隠し入力に関連していると思います)。2番目には私のファイルが含まれています。そして、変数をモデルに割り当てて保存するとき:

$modelPhoto->attributes = $_POST['Photo'];

tec_data_file空の文字列を取得します! したがって、何もデータベースにアップロードされません。これを解決する方法を知っている人はいますか?もっと私が必要なら

4

1 に答える 1

2

次のようなものが必要です。

$model = new Photo;
$model->attributes = $_POST['Photo'];
$model->image = CUploadedFile::getInstance($model,'file');

ここfileで、はフィールドの名前です。

私はこれをテストしていません、それはドキュメントからです。

于 2012-06-13T10:01:46.023 に答える