BoyLee

BoyLee

Hi, I am BoyLee icv.yiilib.com/#lee

  • 财富值2810
  • 威望值150
  • 总积分4510

个人信息

  • 回复了话题 url重构的问题

    应该这样写

    Chtml::link('这里是连接',array('c/a/', 'gid'=>$item['gid'], 'cid'=>$item['cid']))
    

    我想应该是这样写对吧?

  • 回复了话题 yii基础设置

    重写了 errorxxx?

  • 发布了话题
    layout 属性的问题 in controller
  • 原来是不能设置。。。。好像明白了。

  • $PMap->img = Map::model()->generateRandomName(0);
    

    问题解决了, 出错在这一步,大概的方法是,在tabular uploading file的时候,必须指定实例给model的属性,然后验证,我写的代码是验证文件名了,或者内部逻辑不对,大概是这样,不过我之前的代码在单文件upload的时候有效,所以我想 是我不够熟悉这个导致的。

  • 但是我试验了下,验证在一般输入里可以,但是在uploaded里面就失效了。。。
    controller

    public function actionUpdateAll()
    {
        for ($i=1;$i<7;$i++)
        $PMaps[$i]=$this->loadModel($i);
        if(isset($_POST['PPreviewMap']))
        {
            $valid = true;
            foreach ($PMaps as $k=>$PMap)
            {
                $tmp_img_old = $PMap->img;
                $PMap->attributes = $_POST['PPreviewMap']["$k"];
            		
                if (@!empty($_FILES['PPreviewMap']['name']["$k"]['img'])){
                    $PMap->img = Map::model()->generateRandomName(0);
                    //validate, oldname, newname, waiting to save and saveAs
                if ($PMap->validate(array("img"))){ //这一行无效。。。。
                    $tmp_img = CUploadedFile::getInstance($PMap, "[$k]img");
                    echo '<pre>';
                    print_r($tmp_img);
                    echo '</pre>';
                    $tmp_img->saveAs(Yii::app()->basePath.'/../map_img/'.$PMap->img);
                }
                }else {
                    $PMap->img = $tmp_img_old==''? 'default.jpg' : $tmp_img_old;
                }
                $valid = $valid && $PMap->validate();
                }
    		    
                if ($valid)
                    echo 'All Pass';
                }
    
        $this->render('updateAll',
            array('PMaps' =>$PMaps)
        );
    }
    

    view

    <?php 
    foreach ($PMaps as $PMap)
        echo '<p>'.$form->errorSummary($PMap).'</p>'; 
    ?>
    
    <?php foreach ($PMaps as $k=>$PMap):?>
    <div class="row">
        <?php echo $form->labelEx($PMap,"[$k]pre_map_title"); ?>
        <?php echo $form->textField($PMap,"[$k]pre_map_title",array('size'=>32,'maxlength'=>32)); ?>
        <?php echo $form->error($PMap,$k."[$k]pre_map_title"); ?>
    </div>
    
    <div class="row">
        <?php echo $form->labelEx($PMap,"[$k]img"); ?>
        <?php echo $form->fileField($PMap,"[$k]img",array('size'=>60,'maxlength'=>150)); ?>
        <?php echo $form->error($PMap,"[$k]img"); ?>
    </div>
    
    <div class="row">
        <?php echo $form->labelEx($PMap,"[$k]url"); ?>
        <?php echo $form->textField($PMap,"[$k]url",array('size'=>60,'maxlength'=>1500)); ?>
        <?php echo $form->error($PMap,"[$k]url"); ?>
    </div>
    <hr/>
    <?php endforeach;?>
    

    model

    array('img', 'file', 'allowEmpty'=>true, 'types'=>'jpg','maxSize'=>1024*1024*1, 'tooLarge'=>'最大只能上传1MB'),
    

    我想认证这一条规则,但是这个规则只能在单model模式下有效,验证方法 $PMap->validate(array("img")), 一旦使用多model就不行了。。。。而且在tabular file uploading的时候

    $tmp_img = CUploadedFile::getInstance($PMap, "[$k]img");
    

    这样获得的实例,而不是直接'img'

  • 看了一次原来是在这里

    <td><?php echo CHtml::activeTextField($item,"[$i]name"); ?></td>
    

    搞错了POST的类型,下潜,测试下。

  • 以前 获得上传实例是这样实现的,但是在多个model同时的情况下就无效了

    $model->uploaded_cover_img = CUploadedFile::getInstance($model, 'map_img');
    

    如果我改成

    $model->uploaded_cover_img = CUploadedFile::getInstance(${'model_'$i}, 'map_img');
    

    如果这样写 在循环里就抓不到内容了。。好奇怪。。。

  • 发布了话题
    问个批量更新的问题
  • 回复了话题 PHP的多线程

    我也没遇到过 mark一下。。。学习之。

总监 等级规则
4510/5000
资料完整度
60/100
用户活跃度
0/100

Ta的关注

2

Ta的粉丝

22

Ta的访客

71