我有一个Yii应用程序,在布局中我有一个静态侧边栏.我想根据控制器操作或视图更改侧边栏的内容.目前,在views/layouts/main.php文件中,我有一个侧边栏定义为:
<div class="sidebar">hello!</div>
Run Code Online (Sandbox Code Playgroud)
当控制器image和动作是test,我想显示这个:
<div class="sidebar">Created at <? echo $image->created_at; ?></div>
Run Code Online (Sandbox Code Playgroud)
$ image对象在image控制器和test操作中定义.
简而言之,我想在控制器image和动作是时显示侧边栏test,但是,我不希望完全具有不同的布局.我怎么能做到这一点?
我有两张桌子,tbl_student和tbl_record.我想加入他们,但我不知道如何在Yii中做到这一点.我正在使用php.我找到了教程提及CDbCriteria和
'join'=>"INNER JOIN...."
Run Code Online (Sandbox Code Playgroud)
我不知道代码应该具有什么功能以及应该放置代码的型号.tbl_student具有stud_id主键并tbl_record具有record_id主键和stud_id外键.有人可以告诉我一步一步的过程吗?
我有一个表"backup_history",它使用以下字段在我的数据库中存储备份详细信息:
id
site_id
backup_file_name
file_size
by (cron/manual)
datetime
Run Code Online (Sandbox Code Playgroud)
对于下一次备份,我需要查找站点的最近上次备份日期,并与设置(每日备份)进行比较,然后通过cron运行下一次备份.
但我无法找到最后插入的行与
site_id = $ id AND by ='cron'AND date ='这将是最近的日期时间'
$lastbackup = BackupHistory::model()->findByAttributes(array('site_id' => $single_site->id, 'by' => 'cron'));
Run Code Online (Sandbox Code Playgroud)
此代码提供了一行但不是最近的日期n时间.
可能会出错,所以PLZ提出了一些解决方案.谢谢 !!!
我是从yii开始的.
我有以下数据库结构:
Table: Rows:
user [id,login,password,name,email]
userToProject [user_id,project_id,role]
project [id,name,status]
Run Code Online (Sandbox Code Playgroud)
我想检索在status = 3的项目中工作的所有用户作为role = manager.顺便说一句,这是我的代码,我需要进行第二次连接才能达到项目状态.
$criteria=new CDbCriteria;
$criteria->join='INNER JOIN {{userToProject}} a ON t.id=a.user_id and a.role='.Role::MANAGER;
$criteria->distinct=true;
return User::model()->findAll($criteria);
Run Code Online (Sandbox Code Playgroud)
我可以使用标准制作它还是应该实现SQL命令并运行它?
谢谢
我试图通过给出表中的列和表数据本身来创建"视图"或将构建HTML表的函数.这将是Yii中renderPartial方法调用的页面.我想像这样做(将演示使用伪代码):
void view(array $cols, array $tabledata)
{
//$tabledata will be an array of CActiveRecord objects. $cols is an array of strings from getColumnNames().
<table><thead><tr>
foreach($cols as $col)
{
<th>$col</th>
}
</tr></thead><tbody>
foreach($tabledata as $data)
{
<tr>
foreach($cols as $col)
{
<td>$data->$col</td>
}
</tr>
}
</tbody></table>
}
Run Code Online (Sandbox Code Playgroud)
然而,我遇到的问题是我无法获得关系的列.我找到了http://www.yiiframework.com/doc/api/1.1/CDbTableSchema,但似乎只给出了特定表的列名.我需要一种方法来获取关系将用于生成HTML表时使用的所有列.或者,如果有人有更好的方法,请告诉我.谢谢!
编辑:作为一个注释,我没有使用CGridView的原因,包括我下面列出的那个,是我不想知道列是什么或数据.我希望能够使用代码构建表.
我对MVC和Yii框架很新,因此很有可能我的问题非常愚蠢.如果是这样,请提前接受我的预测.
我希望在我的网站管理部分中有一个表单,用户可以在其中发布一些内容.我按照示例博客的教程,但似乎添加到数据库中定义为文本的字段(我的表单中的textarea)的内容在提交表单后没有得到更新(其他一切正常).这是我的表的sql语句:
CREATE TABLE `tbl_show` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`presentation` text,
PRIMARY KEY (`id`),
KEY `fk_tbl_show_tbl_season1` (`tbl_season_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
Run Code Online (Sandbox Code Playgroud)
我使用Gii制作我的模型和CRUD,我只在这里添加可能相关的部分:
在我的控制器上:
public function actionCreate()
{
$model=new Show;
if(isset($_POST['Show']))
{
$model->attributes=$_POST['Show'];
if($model->save())
{
$this->redirect(array('view','id'=>$model->id));
}
}
$this->render('create',array(
'model'=>$model,
));
Run Code Online (Sandbox Code Playgroud)
和我的_form.php:
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'show-form',
'enableAjaxValidation'=>false,
)); ?>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'presentation'); ?>
<?php echo $form->textArea($model,'presentation',array('rows'=>6, 'cols'=>50)); ?>
<?php echo $form->error($model,'presentation'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord …Run Code Online (Sandbox Code Playgroud) 我有一个非常奇怪的问题,我想知道你对此的建议.
有时,当我将更改推送到REMOTE服务器时,不会显示更改.我做ssh到远程机器,我做了git status,我看到:
修改:app/runtime/application.log
问题是,所有目录,现在还有特定文件,都是.gitignore的目标.
/nbproject/
/app/runtime/
/public_html/assets/
/app/runtime/application.log*
/app/runtime/error.log*
Run Code Online (Sandbox Code Playgroud)
没有ftp直接完成,只使用了推拉.
也许它们是app/runtime/application.log在实际站点上写的东西,所以它application.log与存储库中的不同,当发生这种情况时git拒绝拉,因为它将覆盖application.log到旧版本.
这可能发生在同一目录上的许多其他文件中.应用程序运行的那一刻,可以由实时站点创建的文件.
我的问题是,我们怎样才能避免这种情况?为什么.gitignore似乎在这里没有效果?
ps - 如果我需要提供更多细节,比如服务器挂钩或其他什么,请告诉我.
我正在关注这里的文件http://www.yiiframework.com/wiki/278/cgridview-render-customized-complex-datacolumns/
所以我有以下观点
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'item-table-grid',
'dataProvider'=>$model->search(),
'itemsCssClass'=>'item-table-grid',
'columns'=>array(
'customer_name',
array(
'name'=>'Edit',
'value'=>array($model, 'editLink'),
),
),
));
Run Code Online (Sandbox Code Playgroud)
这是模型中的editLink函数
public function editLink($data, $row) {
$link = '';
if ($data->is_draft) {
$link = '<a href="customer/update/'.$data->id.'">Edit</a>';
}
return $link;
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是返回值是编码的,所以我得到<a href=...>
有没有办法告诉CGridView不要对值进行编码?
谢谢
我最近开始和Yii合作,所以请原谅无知:)
我有一个SQL查询返回多行(数组数组),然后我想将这些行插入到DB:
$queryResults = $command->queryAll();
$model=new Campaigns();
foreach ($queryResults as $CActive) {
$model->setIsNewRecord(true);
$model->attributes=$CActive;
if($model->save($CActive)) {
echo "Good!";
}
Run Code Online (Sandbox Code Playgroud)
问题是即使我用新记录设置模型,它也记录了之前的PK(因为它是相同的模型).
我需要为每一行创建一个新模型吗?(似乎不太可能......)
一如既往地谢谢,丹尼
我想在yii应用程序上使用jsrender.我需要注册这样的脚本:
<script id="movieTemplate" type="text/x-jsrender">
<div>
{{:#index+1}}: <b>{{:name}}</b> ({{:releaseYear}})
</div>
</script>
Run Code Online (Sandbox Code Playgroud)
通常我使用CClientScript :: registerScript(); 但它不允许指定ID或类型.谁能建议一个干净的方法来做到这一点?
yii ×10
php ×6
mysql ×3
cgridview ×1
frameworks ×1
git ×1
gitignore ×1
html ×1
inner-join ×1
join ×1
jquery ×1
jsrender ×1
lastinsertid ×1
sidebar ×1
styling ×1