谁一开始就是大神?

PHP 第114页

PHP

CDbCommand和ActiveRecord区别?

BraveCherry阅读(85)

用CDbCommand操作CRUD和用Active Record有什么区别?
权威指南介绍:
Active Record是为了不让我们写冗长的SQL语句,在性能调节上又说:不要滥用 Active Record。虽然 Active Record 擅长以一个 OOP样式模型化数据, 它实际上为了它需要创建一个或几个对 象来代表每条查询结果降低了性能。 对于数据密集的应用,在底层使用 DAO 或 数据库接口 将是一个更好的选择。

哪位大神能具体说一下什么情况下用Active Record合适,而什么情况下又是我们直接写SQL执行合适呢?

单表的时候,用AR很快,多表联合的时候,用sql更快。
其实AR也是调用了CDbCommand,在CActiveRecord的1297行(版本1.1.13)
用AR的话可以使用Scenario,Scope等,另外,zii跟AR绑定比较深,用zii的话就要用AR

cform使用问题:只显示button

dmcrab阅读(63)

model:User.php

<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of User
 *
 * @author Administrator
 */
class User extends CActiveRecord {

    //静态类
    public static function model($className = __CLASS__) {
        return parent::model($className);
    }

    //表名
    public function tableName() {
        return '{{user}}';
    }

    //cform配置文件
    public function getFMConfig() {
        return array(
            'elements' => array(
                'name' => array('type' => 'text', 'maxlength' => 80),
                'password' => array('type' => 'password', 'maxlength' => 80),
            ),
            'buttons' => array(
                'button' => array('type' => 'submit', 'label' => '提交'),
            ),
        );
    }

}
--------------------------------
controller UserController.php

<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of UserController
 *
 * @author Administrator
 */
class UserController extends Controller{
    public function actionRegister(){
        $user = new User();
        $form = new CForm($user->getFMConfig(), $user);

        $this->render('register',array('form'=>$form));
    }

    
}

——————————–

view :register.php

<?php echo $form ?>

———————————————————————-

现象:只显示提交按钮。不显示,input框

如果在elemtns属性中设置label 属性,也能显示,就是不显示正常input框

原理参见 源代码 CForm类的renderElement方法片段, 如果没有设置则不会进行elements中每一个element的渲染;而button的显示条件不一样,所以会显示出来。
需要在model类中加入rules方法,如:
就可以显示出来了
或者这样:
都是为了让元素具有可见性。

YII日志的时间格式(时区)不对。

lovelypony阅读(85)

在配置中打开日志功能

runtime/application.log这个文件的时区格式不对。

比北京时间晚7个小时。

修改php.ini里面的date.timezone
或者在入口文件里面date_default_timezone_set
晚8个小时吧,目测是美国时间= =不知道怎么调

新手问几个yii的小问题

Fionasuper阅读(95)

新手求教:

1、在完成一个程序之后,yii框架还有用吗?(需要将它和程序一起打包上传到服务器使用吗?)

2、可以将yii.php 改为其他名称吗?例如core.php。这样会有什么影响?

第一个是需要上传的。
第二个应该是可以改的,我没试过。不过你做好访问控制和权限,别人是访问不到这个文件的,所以没必要改名。
嗯 似的

请问能否将modules的视图文件分离出来放在themes目录下?

Aibydear阅读(59)

各位大侠,请问能否将modules的视图文件分离出来放在themes目录下?可以的话如何解决?小弟先谢谢了.

直接放到themes目录下与module同名的目录即可,例如
themes/classic/views/admin/article/create.php
可以 指定好渲染视图的路径就好

关于两表联查问题

Harryfans阅读(54)

CActiveDataProvider中的各个参数都什么意思,怎么弄都报错…

参考criteria的with和join属性,CActiveDataProvider第一参数是Model类,第二个参数是模型类对应的查询条件,一般是一个criteria实例。

《应用Yii1.1...敏捷Web开发》actionAdduser的问题

Tinasuper阅读(83)

我在添加 这个action到ProjectController类的时候   显示

Missing argument 1 for ProjectController::loadModel(), called in /home/wwwroot/trackstar/protected/controllers/ProjectController.php on line 197 and defined


public function actionAdduser() 

{

<span class="php-hl-var" style="color: blue;">$form</span><span class="php-hl-code" style="color: gray;">=</span><span class="php-hl-reserved" style="font-weight: bold;">new</span> <span class="php-hl-identifier" style="color: green;">ProjectUserForm</span><span class="php-hl-code" style="color: gray;">; 
</span><span class="php-hl-var" style="color: blue;">$project</span><span class="php-hl-code" style="color: gray;"> = </span><span class="php-hl-var" style="color: blue;">$this</span><span class="php-hl-code" style="color: gray;">-&gt;</span><span class="php-hl-identifier" style="color: green;">loadModel</span><span class="php-hl-brackets" style="color: olive;">(</span><span class="php-hl-brackets" style="color: olive;">)</span><span class="php-hl-code" style="color: gray;">;</span><span class="php-hl-code"><span style="color:#ff0000;">// 这一段的loadModel() 上面的函数只有 loadModel($id),</span></span><span class="php-hl-code" style="color: gray;">
</span><span class="php-hl-comment" style="color: rgb(128, 128, 128); font-style: italic;">//</span><span class="php-hl-comment" style="color: rgb(128, 128, 128); font-style: italic;"> collect user input data</span>
<span class="php-hl-reserved" style="font-weight: bold;">if</span><span class="php-hl-brackets" style="color: olive;">(</span><span class="php-hl-reserved" style="font-weight: bold;">isset</span><span class="php-hl-brackets" style="color: olive;">(</span><span class="php-hl-var" style="color: blue;">$_POST</span><span class="php-hl-brackets" style="color: olive;">[</span><span class="php-hl-quotes" style="color: red;">'</span><span class="php-hl-string" style="color: red;">ProjectUserForm</span><span class="php-hl-quotes" style="color: red;">'</span><span class="php-hl-brackets" style="color: olive;">]</span><span class="php-hl-brackets" style="color: olive;">)</span><span class="php-hl-brackets" style="color: olive;">)</span> <span class="php-hl-brackets" style="color: olive;">{</span>
    <span class="php-hl-var" style="color: blue;">$form</span><span class="php-hl-code" style="color: gray;">-&gt;</span><span class="php-hl-identifier" style="color: green;">attributes</span><span class="php-hl-code" style="color: gray;">=</span><span class="php-hl-var" style="color: blue;">$_POST</span><span class="php-hl-brackets" style="color: olive;">[</span><span class="php-hl-quotes" style="color: red;">'</span><span class="php-hl-string" style="color: red;">ProjectUserForm</span><span class="php-hl-quotes" style="color: red;">'</span><span class="php-hl-brackets" style="color: olive;">]</span><span class="php-hl-code" style="color: gray;">; 
    </span><span class="php-hl-var" style="color: blue;">$form</span><span class="php-hl-code" style="color: gray;">-&gt;</span><span class="php-hl-identifier" style="color: green;">project</span><span class="php-hl-code" style="color: gray;"> = </span><span class="php-hl-var" style="color: blue;">$project</span><span class="php-hl-code" style="color: gray;">; </span><span class="php-hl-comment" style="color: rgb(128, 128, 128); font-style: italic;">//</span><span class="php-hl-comment" style="color: rgb(128, 128, 128); font-style: italic;"> validate user input and set a sucessfull flassh message if valid</span>
    <span class="php-hl-reserved" style="font-weight: bold;">if</span><span class="php-hl-brackets" style="color: olive;">(</span><span class="php-hl-var" style="color: blue;">$form</span><span class="php-hl-code" style="color: gray;">-&gt;</span><span class="php-hl-identifier" style="color: green;">validate</span><span class="php-hl-brackets" style="color: olive;">(</span><span class="php-hl-brackets" style="color: olive;">)</span><span class="php-hl-brackets" style="color: olive;">)</span> 
    <span class="php-hl-brackets" style="color: olive;">{</span>
        <span class="php-hl-identifier" style="color: green;">Yii</span><span class="php-hl-code" style="color: gray;">::</span><span class="php-hl-identifier" style="color: green;">app</span><span class="php-hl-brackets" style="color: olive;">(</span><span class="php-hl-brackets" style="color: olive;">)</span><span class="php-hl-code" style="color: gray;">-&gt;</span><span class="php-hl-identifier" style="color: green;">user</span><span class="php-hl-code" style="color: gray;">-&gt;</span><span class="php-hl-identifier" style="color: green;">setFlash</span><span class="php-hl-brackets" style="color: olive;">(</span><span class="php-hl-quotes" style="color: red;">'</span><span class="php-hl-string" style="color: red;">success</span><span class="php-hl-quotes" style="color: red;">'</span><span class="php-hl-code" style="color: gray;">,</span><span class="php-hl-var" style="color: blue;">$form</span><span class="php-hl-code" style="color: gray;">-&gt;</span><span class="php-hl-identifier" style="color: green;">username</span><span class="php-hl-code" style="color: gray;"> . </span><span class="php-hl-quotes" style="color: red;">&quot;</span><span class="php-hl-string" style="color: red;"> has been added to the project.</span><span class="php-hl-quotes" style="color: red;">&quot;</span> <span class="php-hl-brackets" style="color: olive;">)</span><span class="php-hl-code" style="color: gray;">;
        </span><span class="php-hl-var" style="color: blue;">$form</span><span class="php-hl-code" style="color: gray;">=</span><span class="php-hl-reserved" style="font-weight: bold;">new</span> <span class="php-hl-identifier" style="color: green;">ProjectUserForm</span><span class="php-hl-code" style="color: gray;">;
    </span><span class="php-hl-brackets" style="color: olive;">}</span>
<span class="php-hl-brackets" style="color: olive;">}</span>
<span class="php-hl-comment" style="color: rgb(128, 128, 128); font-style: italic;">//</span><span class="php-hl-comment" style="color: rgb(128, 128, 128); font-style: italic;"> display the add user form </span>
<span class="php-hl-var" style="color: blue;">$users</span><span class="php-hl-code" style="color: gray;"> = </span><span class="php-hl-identifier" style="color: green;">User</span><span class="php-hl-code" style="color: gray;">::</span><span class="php-hl-identifier" style="color: green;">model</span><span class="php-hl-brackets" style="color: olive;">(</span><span class="php-hl-brackets" style="color: olive;">)</span><span class="php-hl-code" style="color: gray;">-&gt;</span><span class="php-hl-identifier" style="color: green;">findAll</span><span class="php-hl-brackets" style="color: olive;">(</span><span class="php-hl-brackets" style="color: olive;">)</span><span class="php-hl-code" style="color: gray;">; 
</span><span class="php-hl-var" style="color: blue;">$usernames</span><span class="php-hl-code" style="color: gray;">=</span><span class="php-hl-reserved" style="font-weight: bold;">array</span><span class="php-hl-brackets" style="color: olive;">(</span><span class="php-hl-brackets" style="color: olive;">)</span><span class="php-hl-code" style="color: gray;">; 
</span><span class="php-hl-reserved" style="font-weight: bold;">foreach</span><span class="php-hl-brackets" style="color: olive;">(</span><span class="php-hl-var" style="color: blue;">$users</span> <span class="php-hl-reserved" style="font-weight: bold;">as</span> <span class="php-hl-var" style="color: blue;">$user</span><span class="php-hl-brackets" style="color: olive;">)</span> 
<span class="php-hl-brackets" style="color: olive;">{</span>
    <span class="php-hl-var" style="color: blue;">$usernames</span><span class="php-hl-brackets" style="color: olive;">[</span><span class="php-hl-brackets" style="color: olive;">]</span><span class="php-hl-code" style="color: gray;">=</span><span class="php-hl-var" style="color: blue;">$user</span><span class="php-hl-code" style="color: gray;">-&gt;</span><span class="php-hl-identifier" style="color: green;">username</span><span class="php-hl-code" style="color: gray;">;
</span><span class="php-hl-brackets" style="color: olive;">}</span>
<span class="php-hl-var" style="color: blue;">$form</span><span class="php-hl-code" style="color: gray;">-&gt;</span><span class="php-hl-identifier" style="color: green;">project</span><span class="php-hl-code" style="color: gray;"> = </span><span class="php-hl-var" style="color: blue;">$project</span><span class="php-hl-code" style="color: gray;">; 
</span><span class="php-hl-var" style="color: blue;">$this</span><span class="php-hl-code" style="color: gray;">-&gt;</span><span class="php-hl-identifier" style="color: green;">render</span><span class="php-hl-brackets" style="color: olive;">(</span><span class="php-hl-quotes" style="color: red;">'</span><span class="php-hl-string" style="color: red;">adduser</span><span class="php-hl-quotes" style="color: red;">'</span><span class="php-hl-code" style="color: gray;">,</span><span class="php-hl-reserved" style="font-weight: bold;">array</span><span class="php-hl-brackets" style="color: olive;">(</span><span class="php-hl-quotes" style="color: red;">'</span><span class="php-hl-string" style="color: red;">model</span><span class="php-hl-quotes" style="color: red;">'</span><span class="php-hl-code" style="color: gray;">=&gt;</span><span class="php-hl-var" style="color: blue;">$form</span><span class="php-hl-code" style="color: gray;">, </span><span class="php-hl-quotes" style="color: red;">'</span><span class="php-hl-string" style="color: red;">usernames</span><span class="php-hl-quotes" style="color: red;">'</span><span class="php-hl-code" style="color: gray;">=&gt;</span><span class="php-hl-var" style="color: blue;">$usernames</span><span class="php-hl-brackets" style="color: olive;">)</span><span class="php-hl-brackets" style="color: olive;">)</span><span class="php-hl-code" style="color: gray;">; 

}

函数就只有这个

public function loadModel($id)
{
$model=Project::model()->findByPk($id);
if($model===null)
throw new CHttpException(404,’The requested page does not exist.’);
return $model;
}

求问应该怎么改

亲,应该这么调用:$this->loadModel($id)

yii图片上传的问题

momoqueen阅读(90)

写了一个yii上传功能,测试不成功,来请教下:

模型里面是这样写的:

public function rules()
    {
        return array(
            array(‘image’,’file’,’types’=>’jpg,gif,png’),
        );
    }

控制器里面是这样写的:

public function actionCreate()
    {
        $model=new Message;

        if(isset($_POST[‘Message’]))
        {

            $model->attributes=$_POST[‘Message’];
            $file=CUploadedFile::getInstance($model,’image’); //获取表单名为filename的上传信息
            $filename=$file->getName();          //获取文件名                                                                         
            $filesize=$file->getSize();                 //获取文件大小                                                                      
            $filetype=$file->getType();                //获取文件类型                                                                   
            $model->image=$filename;           //数据库中要存放文件名                                               
            //$filename1=iconv(“utf-8”, “gb2312”, $filename);//这里是处理中文的问题,非中文不需要   
            //$uploadfile=”upload_image”;                                                                          
            //$file->saveAs($uploadfile,true);
            //$model->attributes=$_POST[‘Message’];
            $model->image = $file;
            if($model->image)
            {
                $newName = time().’.’.$model->image->extensionName;
                $model->image = $newName;
            }
            $file->saveAs(‘uplode_img’,true);
            if($model->save())
            {
                echo “ok”;exit();
            }
        }
        
        $this->render(‘create’,array(
            ‘model’=>$model,    
        ));
    }

视图里面这样写的:

    <div class=”row”>
        <?php echo $form->labelEx($model,’image’); ?>
        <?php echo CHtml::activeFileField($model,’image’); ?>
        <?php echo $form->error($model,’image’); ?>
    </div>

我上传图片的文件夹是uplode_img,它和protected是同级的。

现在问题是我图片上传之后没有保存到uplode_img里面。

请各位前辈帮我看下了,谢了。

if ($uploadedFile != null) {
$uploadedFile->saveAs(Yii::app()->basePath . ‘/../images/’ . $fileName); //图片上传路径
}
Yii::app()->basePath是到protected目录,需要加个..返回到上层目录.

登录

找回密码

注册