标签: yii

在另一个控制器中调用静态方法

我想在另一个控制器中调用静态方法来执行一些类似全局实用程序的操作(例如,更新文件).但我收到一条错误消息:

include(AnotherController.php):无法打开流:没有这样的文件或目录

/yii/framework/YiiBase.php(421):

包括:($类名. 'PHP.');

php yii

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

注销和登录时保留会话

我打印出会话ID,如下所示:

<?php print YII::app()->session->sessionID; ?>
Run Code Online (Sandbox Code Playgroud)

当我log-in和我检查时ID,它就像是:huh09vuo33scdlkmfuc8651t12例如.如果我退出并再次检查,我的ID仍然相同.但是,如果我再次重新登录,则会话ID会发生变化!

我的问题是我在会话中有信息需要存储在cookie中并在登录后重新加载.如果用户的会话ID发生变化,我该如何唯一地确定登录的用户是否是正确的用户?

session yii

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

如何使用Yii的CActiveDataProvider设置当前页面?

我创建了这个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?如何获得精确的页面?

pagination yii cactivedataprovider

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

YII:无法为TbButton设置ID?

我有一个生成按钮的视图:

$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 twitter-bootstrap

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

Yii框架 - 导航栏选项中的Twiiter Bootstrap TbMenu

我开始研究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'),),

但没有成功.

有小费吗?提前致谢.

php yii twitter-bootstrap

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

更改Yii自定义表单验证程序错误消息{attribute}

我可以通过我的模型中的这些代码更改表单验证器错误消息:

array('name, email, subject, body', 'required'
                        'message'=>'Please enter a value for {attribute}.'),
Run Code Online (Sandbox Code Playgroud)

但我不知道{attribute}来自哪里以及如何为每个字段更改它,所以任何帮助都将受到赞赏.

yii

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

为什么Yii允许我使用$ this-> property访问私有的$ this - > _属性?

我不确定这里发生了什么,也许有人有一个线索:

在我的布局上我有这个:

<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()

这是为什么 ?

yii

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

Yii文件上传未验证文件类型

我正在验证要上传的文件类型.验证规则似乎不起作用.我只想接受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)

validation upload file yii

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

Yii数据库迁移

大家好,我是yii框架工作的新手,我正在关注电子书上的拉里·奥尔曼的指示.我遇到的问题是:当我创建新的迁移时,我不断收到此错误

The migration directory does not exists:application.migrations

I use the command : $ yiic migrate create <name>
Run Code Online (Sandbox Code Playgroud)

谢谢你们帮助我理解你们.

migration yii

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

在Yii中为CGridView实现刷新按钮

我有一个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 cgridview

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