标签: yii

在Yii中,我怎样才能有一个循环遍历对象数组的表单?

我正在尝试创建一个Yii ActiveForm,用于编辑表中显示的对象列表中的值.

涉及的课程:

class ResultForm extends CFormModel {

    /**
     * @var array[Result]
     */
    public $results; //Filled with an array of Result objects
}

class Result {  
    public $requiredArea;
}
Run Code Online (Sandbox Code Playgroud)

我的看法:

<% $form = $this->beginWidget('CActiveForm'); %>
<table>
   ....
   <% $rowCounter = 0; foreach($resultForm->results as $result): %>
       ...
       <tr>
           ....
           <td>
               <!-- This doesn't work -->
               <% $form->textField($resultForm,
                   "results[$rowCounter]->requiredArea") %>

               <!-- Just displaying the value works -->
               <%= $resultForm->results[$rowCounter]->requiredArea %>
           </td>
           ...
       </tr>
       <% $rowCounter++; endforeach; %>
</table>
<% $this->endWidget(); %>
Run Code Online (Sandbox Code Playgroud)

文本字段被渲染,Yii不会抱怨,但它们不包含正确的值. …

php yii

0
推荐指数
1
解决办法
4631
查看次数

Yii关系活动记录中的两级"with"

我有三张桌子:

  1. tbl_tag
  2. tbl_post
  3. tbl_post_tag(post_id, tag_id)
  4. tbl_users.

每个帖子都有多个标签,每个标签都有多个帖子.(很多很多)

每个帖子只有一个用户,每个用户有多个帖子.

tbl_post_tag用来记录Post和Tag之间的关系.

现在我想通过tag_id检索所有帖子(比如显示所有帖子和相应的用户,tag_id = 1)

我真的不知道该怎么做.

我的猜测是使用Tag::model()->with("post")->findByPk(1),但是这会同时检索用户吗?

或者有更好的方法来完成这项工作吗?

谢谢!

php yii

0
推荐指数
1
解决办法
3340
查看次数

在MVC中放置逻辑的适当位置

我正在用yii框架编写一个mvc web应用程序.我有一个业务逻辑,我不确定在哪里放置它. $usernameid=$model->random_id_gen('5');是我正在谈论的功能.

SiteController:

<!-- snip -->
      public function actionIndex()
       {
         $model = new Users();

         if (isset($_POST['Users'])) {
            //call the active record table model
            $model = new Users();

            //massively assign attributes
            $model->attributes=$_POST['Users'];

            //generate random userid
            $usernameid=$model->random_id_gen('5');


<!-- snip -->
Run Code Online (Sandbox Code Playgroud)

用户活动记录类:

 <!-- snip -->
  public function random_id_gen($length)
    {
        $characters = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ';
        $max = strlen($characters) - 1;
        $string = '';

        for ($i = 0; $i < $length; $i++) {
            $string .= $characters[mt_rand(0, $max)];
        }

        return $string;
    }
Run Code Online (Sandbox Code Playgroud)

我的问题:这个id生成器函数是否属于Active记录模型?它应该在控制器中吗?它应该是一个单独的模型,因为它是"业务逻辑",但与数据库没什么关系?

我正在努力改善我的MVC课程"膨胀".提前谢谢你们.

更新 我正在寻找一个特定的解决方案.如果有这样的约定,似乎问题已经发展成"应该把图书馆放在哪里".

model-view-controller yii

0
推荐指数
1
解决办法
2736
查看次数

Yii CGridView列值,从模型中实现

我想在视图中制作一些CGridView表.并且一列应包含DropDown列表.主要问题是,此下拉列表必须由模型生成.

所以,在我看来,我这样做:

$this->widget('zii.widgets.grid.CGridView', array(
                'dataProvider'=>$orders->search(),
                'filter' => $orders,
                'columns' => array(
                    array(
                        'name' => 'actions',
                        'header' => 'Actions',
                        'value' => '$data->actions',
                        'filter' => false,


    ),
));
Run Code Online (Sandbox Code Playgroud)

并在订单模型:

public function getActions() {
    return CHtml::dropDownList('status', $this->status->id,  CHtml::listData(Status::model()->findAll(), 'id', 'title'));
}
Run Code Online (Sandbox Code Playgroud)

我用这个下拉列表的代码得到了相当不错的列值,但所有特殊的chracters编码为lt; QUOT; GT; 等等,只是字符串,而不是html元素.

那么,如何获得真正的html下拉列表?

[已解决]只需为此列添加'type'=>'raw'即可解决所有这些问题

php yii

0
推荐指数
1
解决办法
7619
查看次数

Yii的listData问题

我有一个名为manager的模型,我想创建一个下拉列表,根据manager ID提取管理器名称.我正在使用下面的代码

echo $form->dropDownList
(
  $model,'country', 
  CHtml::listData(Country::model()->findAll(), 'id', 'value1','value2'), 
  array('empty'=>;'--please select--')
);
Run Code Online (Sandbox Code Playgroud)

下拉列表实际上给了我想要的名字('值'),但不会显示默认的空数组值,如何显示"请选择"位?

php yii drop-down-menu

0
推荐指数
1
解决办法
808
查看次数

Yii - CJuiDialog关闭提交按钮单击

我有一个CJuiDialog,下面是代码

<?php $this->beginWidget('zii.widgets.jui.CJuiDialog', array(
    'id'=>'mymodal',
    'options'=>array(
        'title'=>'Your 10 seconds take you into ....',
        'width'=>700,
        'height'=>400,
        'autoOpen'=>true,
        'resizable'=>false,
        'modal'=>true,
        'closeOnEscape' => false,     
    ),

)); ?>
Run Code Online (Sandbox Code Playgroud)

在这个对话框中,我有表格,并在下面提交按钮的形式

<?php echo CHtml::submitButton('Submit', array('onclick'=>'js:function(){ alert("test"); $(#mymodal).dialog("close");}',
        )); ?>
Run Code Online (Sandbox Code Playgroud)

单击此按钮,我想关闭此对话框并提交表单.但是我在Button中编写的上述代码无效.任何语法错误?

我试过的其他方法是,我在对话框中使用按钮并能够使用关闭对话框

`js:function(){$(this).dialog("close")` 
Run Code Online (Sandbox Code Playgroud)

但我无法在那里提交表格.所以采取了第一种方法.

任何人都可以帮我解决问题吗?

感谢致敬

基兰

dialog onclick yii

0
推荐指数
1
解决办法
1万
查看次数

yiic命令行工具输出代码而不是打开shell

当我运行命令时: users-MacBook-Air:trackstar user$ ../yii/framework/yiic shell

哪个应该为Yii启动yiic shell工具.我只是得到这样的输出:

<!DOCTYPE html PUBLIC
    "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>
PHP Error</title>

<style type="text/css">
/*<![CDATA[*/
body {font-family:"Verdana";font-weight:normal;color:black;background-color:white;}
h1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
h2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
h3 {font-family:"Verdana";font-weight:bold;font-size:11pt}
p {font-family:"Verdana";font-size:9pt;}
pre {font-family:"Lucida Console";font-size:10pt;}
.version {color: gray;font-size:8pt;border-top:1px solid #aaaaaa;}
.message {color: maroon;}
.source {font-family:"Lucida Console";font-weight:normal;background-color:#ffffee;}
.error {background-color: #ffeeee;}
/*]]>*/
</style>
</head>

<body>
Run Code Online (Sandbox Code Playgroud)

等等,任何想法为什么会这样?

php terminal command-line frameworks yii

0
推荐指数
1
解决办法
1544
查看次数

将NodeJS Realtime与现有PHP应用程序集成

我有一个在Apache服务器上运行的现有PHP应用程序.

问题,是否可以通过"Proxy-Pass"嵌入到NodeJS服务器中说Socket.IO客户端JS?

比如说,我在数据库中用PHP保存了一个键值对,同时将该消息发送给连接到该通道的每个人,我刚刚保存的值.

如果我使用NodeJS和Socket.IO/Faye,我会将客户端JS嵌入Apache提供的页面中.但基本上该脚本来自Proxy-Pass到NodeJS.

对此的一些启示将是非常友好的.

谢谢

php real-time yii node.js

0
推荐指数
1
解决办法
4852
查看次数

Yii CActiveDataProvider按日期范围标准过滤

我正在使用Yii 1.1.8.尝试在控制器操作中按日期限制$ dataProvider源.我想过滤数据集以仅显示最近2年的条目,但无法使其工作.

我在事件表中有两条记录,其中一条记录是2个月前,另一条记录是4年前.

尝试:

$dataProvider=new CActiveDataProvider('Event', array(
                    'criteria'=>array(
                        'condition'=>'date >= '.date('Y-m-d', strtotime('-2 years')). ' AND  date <='. date('Y-m-d'),
                    ),
                ));
Run Code Online (Sandbox Code Playgroud)

$dataProvider=new CActiveDataProvider('Event', array(
                    'criteria'=>array(
                        'condition'=>'date >= '.date('Y-m-d', strtotime('-2 years')),
                    ),
                ));
Run Code Online (Sandbox Code Playgroud)

$dataProvider=new CActiveDataProvider('Event', array(
                    'criteria'=>array(
                        'condition'=>'date BETWEEN '.date('Y-m-d', strtotime('-2 years')).' AND '. date('Y-m-d'),
                    ),
                ));
Run Code Online (Sandbox Code Playgroud)

全部返回"未找到结果".我究竟做错了什么?它似乎应该是简单的东西,但我很难过.

database criteria yii

0
推荐指数
1
解决办法
1万
查看次数

Yii urlmanager疯狂的规则

早上好,

我的网站还有另一个问题.我开发了一个类似于yellowpages.com的网站(不是那么相似但只是想知道)

现在他们让我用SEO和网址重写做一些疯狂的事情.

我将从我的main.php开始

'urlManager'=>array(
        'urlFormat'=>'path',
                    'showScriptName'=>false,
        'rules'=>array( 
                            'surf/category/<id:[0-9]+>/page/<page:[0-9]+>'=>'naviga/categoria/',
                            'surf/subcategory/<id:[0-9]+>/page/<page:[0-9]+>'=>'naviga/sottocategoria/',
                            'surf/page/<page:[0-9]+>'=>'surf/',
                            'contact' =>'site/contact/',
                            'write-mail/<id:[0-9]+>' =>'site/contact/',
                            'privacy' =>'site/page/view/privacy',
                            'register'=>'site/page/view/register',

                            '<controller:\w+>/<id:\d+>'=>'<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',

            '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',

                        ),
    ),
Run Code Online (Sandbox Code Playgroud)

现在请求..... T_T他们想要的网址将是这样的:

http://domain.com/category-name/而不是http://domain.com/surf/category/3(例如)

http://domain.com/category-name/sub-category-name/而不是http://domain.com/surf/subcategory/3

http://domain.com/category-name/sub-category-name/society-name/而不是http://domain.com/detail/2

显然,链接的其余部分必须使用最后3个控制器规则....有人可以帮助我??? 我处在一个非常紧张的地方......如果我找不到周二的解决方案,他们会踢我的屁股.....

T_T

在此先感谢您的帮助.

php url-rewriting yii yii-routing

0
推荐指数
1
解决办法
7056
查看次数