我正在尝试创建一个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不会抱怨,但它们不包含正确的值. …
我有三张桌子:
tbl_tagtbl_posttbl_post_tag(post_id, tag_id)tbl_users.每个帖子都有多个标签,每个标签都有多个帖子.(很多很多)
每个帖子只有一个用户,每个用户有多个帖子.
我tbl_post_tag用来记录Post和Tag之间的关系.
现在我想通过tag_id检索所有帖子(比如显示所有帖子和相应的用户,tag_id = 1)
我真的不知道该怎么做.
我的猜测是使用Tag::model()->with("post")->findByPk(1),但是这会同时检索用户吗?
或者有更好的方法来完成这项工作吗?
谢谢!
我正在用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课程"膨胀".提前谢谢你们.
更新 我正在寻找一个特定的解决方案.如果有这样的约定,似乎问题已经发展成"应该把图书馆放在哪里".
我想在视图中制作一些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'即可解决所有这些问题
我有一个名为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)
下拉列表实际上给了我想要的名字('值'),但不会显示默认的空数组值,如何显示"请选择"位?
我有一个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)
但我无法在那里提交表格.所以采取了第一种方法.
任何人都可以帮我解决问题吗?
感谢致敬
基兰
当我运行命令时: 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)
等等,任何想法为什么会这样?
我有一个在Apache服务器上运行的现有PHP应用程序.
问题,是否可以通过"Proxy-Pass"嵌入到NodeJS服务器中说Socket.IO客户端JS?
比如说,我在数据库中用PHP保存了一个键值对,同时将该消息发送给连接到该通道的每个人,我刚刚保存的值.
如果我使用NodeJS和Socket.IO/Faye,我会将客户端JS嵌入Apache提供的页面中.但基本上该脚本来自Proxy-Pass到NodeJS.
对此的一些启示将是非常友好的.
谢谢
我正在使用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)
全部返回"未找到结果".我究竟做错了什么?它似乎应该是简单的东西,但我很难过.
早上好,
我的网站还有另一个问题.我开发了一个类似于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
在此先感谢您的帮助.
yii ×10
php ×7
command-line ×1
criteria ×1
database ×1
dialog ×1
frameworks ×1
node.js ×1
onclick ×1
real-time ×1
terminal ×1
yii-routing ×1