我想在另一个控制器中调用静态方法来执行一些类似全局实用程序的操作(例如,更新文件).但我收到一条错误消息:
include(AnotherController.php):无法打开流:没有这样的文件或目录
在/yii/framework/YiiBase.php(421):
包括:($类名. 'PHP.');
我打印出会话ID,如下所示:
<?php print YII::app()->session->sessionID; ?>
Run Code Online (Sandbox Code Playgroud)
当我log-in和我检查时ID,它就像是:huh09vuo33scdlkmfuc8651t12例如.如果我退出并再次检查,我的ID仍然相同.但是,如果我再次重新登录,则会话ID会发生变化!
我的问题是我在会话中有信息需要存储在cookie中并在登录后重新加载.如果用户的会话ID发生变化,我该如何唯一地确定登录的用户是否是正确的用户?
我创建了这个CActiveDataProvider:
$dataProvider=new CActiveDataProvider('Post',array(
'criteria'=>array(
'condition'=>$condition,
'params'=>$params,
),
'pagination'=>array(
'pageSize'=>2,
),
));
Run Code Online (Sandbox Code Playgroud)
但是......如何定义当前页面和加载记录3,4而不是1,2?如何获得精确的页面?
我有一个生成按钮的视图:
$view->widget('bootstrap.widgets.TbButton', array(
'id' => 'removeButton',
'label' => $label,
'buttonType' => 'ajaxButton',
... etc
Run Code Online (Sandbox Code Playgroud)
生成按钮后,我检查代码,我看到:
<button name="yt0" id="yt0" class="btn btn-primary btn-large" data-loading-text="loading...." type="button">Add to Cart</button>
Run Code Online (Sandbox Code Playgroud)
为什么名称和id都是yt0,而不是像我指定的那样"removeButton"?
我开始研究Yii和PHP,并且正在使用cniska.net的这个Twitter Bootstrap, 并且能够使它工作.
然而,我发现一些困难使它按照我想要的方式工作.并且在文档中没有找到任何有用的东西,尽管我可能错过了一些东西.
我有这样的导航栏:
$this->widget('bootstrap.widgets.TbNavbar', array(
'brand'=>'XPTO',
'brandUrl'=>'#',
'fixed' => 'top',
'collapse'=>true, // requires bootstrap-responsive.css
'items'=>array(
array(
'class'=>'bootstrap.widgets.TbMenu',
'items'=>array(
array('label'=>'1st Link', 'url'=>'#', 'active'=>true),
array('label'=>'2nd Link', 'url'=>'#'),
array('label'=>'3rd Link', 'url'=>'#'),
array('label'=>'4thLink', 'url'=>'#'),
),
),
(..)
Run Code Online (Sandbox Code Playgroud)
那么,我的第一个问题是:
在下面'brand'=>'XPTO',是否可以输入图像的路径?例如徽标?我知道我可以尝试进入图像路径但是图像并排在一起吗?(这会避免我创建和包含2的图像).
其次:
我想根据我点击的链接操作并在我的布局中添加页面移动,因此,*我想为每个'li'添加'id'属性,因此最终结果如下:
<li class="active" id="xyz"><a href="#"> Link Text </a></li>
我试过了
array('label'=>'2nd Link', 'url'=>'#', 'id'=>'xyz'),
和
array('label'=>'2nd Link', 'url'=>'#', 'htmlOptions'=>array(
'id'=>'xyz'),),
但没有成功.
有小费吗?提前致谢.
我可以通过我的模型中的这些代码更改表单验证器错误消息:
array('name, email, subject, body', 'required'
'message'=>'Please enter a value for {attribute}.'),
Run Code Online (Sandbox Code Playgroud)
但我不知道{attribute}来自哪里以及如何为每个字段更改它,所以任何帮助都将受到赞赏.
我不确定这里发生了什么,也许有人有一个线索:
在我的布局上我有这个:
<div id="main-content" class="<?= $this->getMainClass(); ?>">
Run Code Online (Sandbox Code Playgroud)
在组件>控制器类我有这个:
private $_mainCssClass;
public function setMainCssClass($className) {
if (is_string($className)) {
$this->_mainCssClass = $className;
} else {
quickDump($className);
}
}
public function getMainCssClass() {
return $this->_mainClass;
}
Run Code Online (Sandbox Code Playgroud)
我没有得到的是,尽管我们正在使用访问器,并且mainCssClass属性有一个下划线并且它被声明为私有,我可以通过以下方式访问它:
$this->MainCssClass;
Run Code Online (Sandbox Code Playgroud)
同样如下: $this->getMainCssClass()
这是为什么 ?
我正在验证要上传的文件类型.验证规则似乎不起作用.我只想接受jpg文件,但是当我尝试输入pdf文件时,它仍然接受它并且不会给出任何错误.请帮忙.我不知道我做错了什么.
视图:
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'document-form',
'enableAjaxValidation'=>true,
'enableClientValidation'=>true,
'clientOptions'=>array('validateOnSubmit'=>true), //This is very important
'htmlOptions'=>array('enctype'=>'multipart/form-data'),)); ?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'barangay_clearance'); ?>
<?php echo $form->fileField($model,'barangay_clearance'); ?>
<?php echo $form->error($model,'barangay_clearance'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
</div>
<?php $this->endWidget(); ?>
Run Code Online (Sandbox Code Playgroud)
模型:
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('barangay_clearance', …Run Code Online (Sandbox Code Playgroud) 大家好,我是yii框架工作的新手,我正在关注电子书上的拉里·奥尔曼的指示.我遇到的问题是:当我创建新的迁移时,我不断收到此错误
The migration directory does not exists:application.migrations
I use the command : $ yiic migrate create <name>
Run Code Online (Sandbox Code Playgroud)
谢谢你们帮助我理解你们.
我有一个CGridView,我想放一个按钮刷新.
我已经尝试添加AjaxButton但我无法做到.
网格ID是会话网格.
我有一个只有CGridView的局部视图.
我设法让它工作,但它是重复的,原始停留在那里.我错过了什么?
非常感谢!
编辑:选择:
<?php
Yii::app()->clientScript->registerScript('initRefresh',<<<JS
$('#update-grid-button').on('click',function(e) {
e.preventDefault();
$('#session-grid').yiiGridView('update');
});
JS
,CClientScript::POS_READY);
$this->widget('bootstrap.widgets.TbButton', array(
'label'=>'Actualizar',
'type'=>'primary',
'icon'=>'repeat white',
'htmlOptions'=>array(
'id'=>'update-grid-button',
'class'=>'pull-right',
)
));
?>
Run Code Online (Sandbox Code Playgroud) yii ×10
php ×2
cgridview ×1
file ×1
migration ×1
pagination ×1
session ×1
upload ×1
validation ×1