我刚刚开始学习使用yii,并且已经设法做了一些基本的东西.
假设我有两个简单的表:"用户"和"项目",其中关系是1到多(一个用户可以有很多项目)
我使用GII生成了CRUD,但是在"创建/编辑用户页面"中,这不提供下拉列表,而只提供我需要输入用户ID的文本字段.
在编辑项目时,我想有一个下拉列表,我可以在其中选择一个用户(因此该元素应该显示一个用户名列表).
我假设GII无法为此生成控制器和查看代码
这样做的最佳做法是什么?
我已按照http://www.yiiframework.com/doc/guide/1.1/en/database.arr中的说明声明了这些关系
public function relations()
{
return array(
'projects_rel'=>array(self::BELONGS_TO, 'Users', 'user_id'),
);
}
Run Code Online (Sandbox Code Playgroud)
和
public function relations()
{
return array(
'users_rel'=>array(self::HAS_MANY, 'Projects', 'project_id'),
);
}
Run Code Online (Sandbox Code Playgroud) 首先,我有搜索Stack Overflow的答案,但我还没有找到一个有效的解决方案.
我正在使用MVC框架(yii)生成一些视图并将它们放入数组中.每张视图都是一张牌,我有一系列牌($ deck)以及一系列牌($ hands,每个牌手的牌局).我只是想在前端设置一个javascript变量来存储用PHP创建的指针.值得注意的是,我的观点有多条线.实际上,我当前的测试视图仅包含:
test
test
Run Code Online (Sandbox Code Playgroud)
因此我使用了json_encode,但是当我使用$ .parseJSON()时它会给我以下错误:
Uncaught SyntaxError: Unexpected token t
Run Code Online (Sandbox Code Playgroud)
我在别处读到,需要(无论出于何种原因)两次使用json_encode.我试过这个,但没有用.
使用单个json_encode,echoing $hands(后跟退出)的输出看起来非常健康:
[["test\ntest","test\ntest","test\ntest","test\ntest", etc...
Run Code Online (Sandbox Code Playgroud)
但是当我不退出时,每次都会出现语法错误.
编辑:这是我的代码示例.请注意,$ cards通常是一个HTML数组,但在我的简化情况下仍然存在错误,仅包括上面提到的两行'test'.
$deck = array();
foreach ($cards as $card) {
$deck[] = $this->renderPartial('/gamePieces/cardTest',
array('card'=>$card), true);
}
$hands = Cards::handOutCards($deck, $numCards , $numPlayers);
$hands = json_encode($hands);
echo $hands; exit;
Run Code Online (Sandbox Code Playgroud)
使用JavaScript,我正在执行以下操作:
var hands = $.parseJSON('<?php echo json_encode($hands); ?>');
Run Code Online (Sandbox Code Playgroud)
它在页面加载时出错.
任何帮助,将不胜感激!
谢谢,
ParagonRG
我在我的一个项目中使用Yii框架,我想将jQuery Form插件与Yii客户端内置验证一起使用.
我不能让他们一起工作.如果我jQuery form plugin使用这个简单的js代码设置:
$('#myform-id').ajaxForm();
Run Code Online (Sandbox Code Playgroud)
执行客户端验证但即使验证失败也不会停止表单提交.我想这与Yii客户端验证库和jQuery表单插件在表单上绑定相同的"submit"事件有关.
仅供参考,我仔细检查过FireBug和Chrome控制台没有js错误.
我想知道是否有人经历过同样的问题并且解决了一些问题.
我在Yii Framework中有这么一小段代码:
array('username', 'unique', 'attributeName'=> 'username', 'caseSensitive' => 'false'),
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误:
RegisterForm and its behaviors do not have a method or closure named "tableName".
Run Code Online (Sandbox Code Playgroud)
完整的RegisterForm.php模型:
<?php
class RegisterForm extends CFormModel
{
public $username;
public $password;
public $password2;
public $email;
public $fullname;
public $birth;
public function rules()
{
return array(
array('username, password, password2, email, fullname, birth', 'required'),
array('username','length','min'=>3),
array('username','length','max'=>16),
array('username', 'filter', 'filter'=>'strtolower'),
array('username', 'ext.alpha', 'allowSpaces'=>'flase', 'allAccentedLetters'=>'false'),
array('username', 'unique', 'attributeName'=> 'username', 'caseSensitive' => 'false'),
array('password', 'length', 'min' =>6),
array('password', 'length', 'max' =>32),
array('password', …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用YII CGridview来显示一些数据.
这是我的模型搜索功能的主页:
/**
* Retrieves a list of models based on the current search/filter conditions.
* @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
*/
public function search()
{
$criteria=new CDbCriteria;
$criteria->compare('ip',$this->ip,true);
$criteria->compare('first_use',$this->first_use,true);
$criteria->compare('last_use',$this->last_use);
$criteria->compare('memberid',$this->memberid);
$criteria->compare('countryid',$this->countryid);
return new CActiveDataProvider(get_class($this), array(
'criteria'=>$criteria,
));
}
Run Code Online (Sandbox Code Playgroud)
这就是我的观点
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'iplog-grid',
'dataProvider'=>$oIPLog->search(),
'filter'=>$oIPLog,
'summaryText' => 'showing you {start} - {end} of {count} logged Ips',
'columns'=>array(
array(
'name'=>'ip',
'type'=>'raw',
),
array(
'name'=>'first_use',
'type'=>'datetime',
),
array(
'name'=>'last_use',
'type'=>'datetime', …Run Code Online (Sandbox Code Playgroud) 我正在构建一个Web应用程序,最终想要使用Yii框架.但是现在我正在进行Web应用程序本身的过程或原型设计.虽然我喜欢Twitter Bootstrap,但我很好奇,
如果我从Themeforest购买管理员模板,那么无论如何它会提供比Bootstrap更完整的功能吗?有没有人使用这些模板,您的经验/意见是什么?
假设我使用Bootstrap或Themeforest的主题完成线框,Yii'ify它有多容易?
嗨伙计们!在我的网站上,我注意到在某些页面上我没有包含Jquery库.但在其他页面上,我在头标记中看到它:
<head>
...
<script type="text/javascript" src="/assets/fe9bd624/jquery.js"></script>
<script type="text/javascript" src="/assets/fe9bd624/jquery.ba-bbq.js"></script>
...
</head>
Run Code Online (Sandbox Code Playgroud)
在我的主题布局/ main.php中,我没有头标记中的Jquery文件.所以问题是:什么控件在我的页面上插入Jquery,以及如何在所有页面上插入它.谢谢.
我还是Yii的新手,想知道如何从中返回JSON $models = MyModel::model()->findAll();.
比如说MyModel有一种关系MyChildModels:一种:多种方式.
直接来自Yii网站上的Rest示例我有:
foreach ($models as $model) {
$rows[] = $model->attributes;
}
$this->_sendResponse(200, CJSON::encode($rows), 'application/json');
Run Code Online (Sandbox Code Playgroud)
我得到了所有模型的属性,但没有得到连接的关系属性.
同样,我可以将$rows行更改为:
$rows[] = $model->myChildModels;
Run Code Online (Sandbox Code Playgroud)
...我获得myChildModels了每个模型的所有属性,但没有任何属性(正如我所期望的那样).
但我想要的是全套 - Model属性PLUS所有myChildModels及其属性.
我该如何做到这一点?
我想在YII视图中以desending顺序显示一些数据.我是否默认按studentID desc订购数据?
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id' => 'student-grid',
'criteria'=>array(
'order'=>'StudentID DESC',
),
'dataProvider' => Agent::getStudents($model->agent_id),
'columns' => array(
'StudentID',
'first_name',
'last_name',
'dob',
'gender',
array(
'header' => 'Options',
'class' => 'CButtonColumn',
'template'=>'{View}',
'buttons'=>array(
'View' => array(
'url'=> 'Yii::app()->createUrl("/students/view/" . $data->StudentID)',
),
),
),
),
)); ?>
Run Code Online (Sandbox Code Playgroud)
谢谢Ab
yii ×10
php ×7
activerecord ×2
validation ×2
filter ×1
forms ×1
frameworks ×1
javascript ×1
jquery ×1
json ×1
mysql ×1
wireframe ×1