标签: yii2

在yii2中自定义网格视图

如何在Yii2中删除特定网格视图的摘要和排序器.在Yii1.1中,我们可以通过设置模板属性来实现.在yii2中如何实现这一目标?

php gridview cgridview yii2

28
推荐指数
3
解决办法
5万
查看次数

Yii2 SearchModel中的search()如何工作?

有人可以解释一下searchYii2中的方法是如何SearchModel工作的吗?我用Gii生成它.这里是:

public function search($params){
    $query = MyModel::find();
    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);

    if (!($this->load($params) && $this->validate())) {
        return $dataProvider;
    }

    $this->addCondition($query, 'att1');
    $this->addCondition($query, 'att1', true);
    $this->addCondition($query, 'att2');
    $this->addCondition($query, 'att2', true);

    return $dataProvider;
}
Run Code Online (Sandbox Code Playgroud)

这就是我所说的:

$search = new MyModelSearch();
$myModels = $search->search(['att3' => '3']);
Run Code Online (Sandbox Code Playgroud)

无论我在调用中使用什么属性search,我总是得到相同的结果 - 即表中的所有条目.我在这里遗漏了一些我不明白的东西.

任何帮助将非常感激.谢谢.

php yii yii2

28
推荐指数
1
解决办法
4万
查看次数

Yii2资产清除缓存

每次我在infoweb\menu\module\assets中更新我的css或js文件时,我都要清空后端\ web\assets文件夹
有没有办法自动清除资产缓存?

php assets yii2

28
推荐指数
4
解决办法
4万
查看次数

使用composer在非空文件夹上安装包

我试图通过composer安装包但是它一直告诉我这个目录不是空的,那么如何使用composer在非空文件夹上安装包呢?有强制安装命令吗?

错误信息:

  [InvalidArgumentException]
  Project directory Yii-GZero-2b/ is not empty.
Run Code Online (Sandbox Code Playgroud)

php composer-php yii2

28
推荐指数
1
解决办法
4万
查看次数

Yii2:使用查询构建器更新字段

如何在Yii2中使用查询构建器更新字段?我在文档中找不到这个.

谢谢!

UPD

这是解决方案:

// UPDATE
$connection = Yii::$app->db;
$connection->createCommand()->update('user', ['status' => 1], 'age > 30')->execute();
Run Code Online (Sandbox Code Playgroud)

updating query-builder yii2

27
推荐指数
4
解决办法
6万
查看次数

Yii2 - ActiveForm ajax提交

我如何使用ActiveForm满足这些要求?

  • 使用ajax提交表单.

  • 在使用ajax提交之前:检查是否有错误退出.

  • 提交后:如果服务器响应不成功保存结果,则在字段输入下显示字段错误.

ajax yii2 active-form

27
推荐指数
2
解决办法
5万
查看次数

Yii2 BootstrapAsset未加载bootstrap.js

yii\bootstrap\BootstrapAsset没有加载bootstrap.js,像"模态"和其他元素不起作用.

class AppAsset extends AssetBundle {
    public $basePath = '@webroot';

    public $baseUrl = '@web';

    public $css = [    
        /* theme */
        'css/site.css',

        /* jasny bootstrap */
        'public/jasny/css/jasny-bootstrap.min.css',

        /* font awesome */
        'public/font-awesome-430/css/font-awesome.min.css',

        /* font roboto */
        'public/fonts/roboto/roboto.css',

        /* Data Tables */
        'public/datatables/extensions/integration/bootstrap/3/dataTables.bootstrap.css',  
    ];

    public $js = [    
        /* jasny bootstrap  */
        'public/jasny/js/jasny-bootstrap.min.js',

        /* Data Tables  */
        'public/datatables/datajs.js',
        'public/datatables/media/js/jquery.dataTables.min.js',
        'public/datatables/extensions/integration/bootstrap/3/dataTables.bootstrap.js',               
    ];

    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
    ];    
}
Run Code Online (Sandbox Code Playgroud)

是图书馆的屏幕,bootstrap.js在那里缺失.

javascript yii2 twitter-bootstrap-3

27
推荐指数
3
解决办法
1万
查看次数

如何在Yii2中的ON条件中使用常量h​​asMany关系

我尝试创建一个多态关联,这在Rails中很常见,但遗憾的是在Yii2中没有.作为实现的一部分,我需要定义关系:

public function getImages()
{
   return $this->hasMany(RecipeImage::className(), 
       ['imageable_id' => 'id', 'imageable_type' => 'Person']);
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为'Person'被视为当前模型的属性,但它是一个常量(多态关联的类名).

如果我尝试使用'andWhere',它当然会在WHERE子句而不是ON子句中添加条件,导致只返回包含现有图像的记录.

public function getImages()
{
   return $this->hasMany(RecipeImage::className(), ['imageable_id' => 'id'])->
       andWhere(['imageable_type' => 'Ingredient']);
}
Run Code Online (Sandbox Code Playgroud)

我该如何定义关系?没有andOn方法.

has-many relation polymorphic-associations yii2

27
推荐指数
1
解决办法
2万
查看次数

Yii2全局过滤器/行为,强制用户首先进行身份验证

在我的Yii2应用程序中,我试图强制所有用户进行身份验证.如果它们尚未经过身份验证,则应将其重定向到登录页面.

在Yii1中,我通过创建一个类来检查用户是否已登录并将该类附加到onBeginRequest我的主配置文件中的行为来完成此操作.

// Yii 1
'behaviors' => array(
    'onBeginRequest' => array(
        'class' => 'application.components.RequireLogin',
    )
),
Run Code Online (Sandbox Code Playgroud)

如何在Yii2中获得相同的行为?我知道我可以使用行为来执行此操作,但我不想将此行为添加到我的主配置文件中,因此首先检查所有请求的身份验证.

工作行为方法如下所示:

// Yii2
public function behaviors() {
    return [
        'access' => [
            'class' => AccessControl::className(),
            'rules' => [
                [
                    'actions' => ['login', 'error'],
                    'allow' => true,
                ],
                [
                    'allow' => true,
                    'roles' => ['@'],
                ],
            ],
        ],
    ];
}
Run Code Online (Sandbox Code Playgroud)

php rbac yii yii2

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

不使用Composer手动安装Yii2扩展

我想在不使用composer的情况下使用Yii2 Framework手动安装Select 2扩展小部件.

我完成了以下步骤,但它不起作用.

1)添加yii2-widget-select2vendor/yii-soft

2)在我的代码中添加了以下代码yii-soft/extensions.php:

'yiisoft/yii2-widget-select2' => array(
    'name' => 'yiisoft/yii2-widget-select2',
    'version' => '2.0.3.0',
    'alias' =>
    array(
        '@yii/kartik' => $vendorDir . '/yiisoft/yii2-widget-select2',
    ),
),
Run Code Online (Sandbox Code Playgroud)

3)以视图形式添加显示:

use kartik\select2\Select2;

<?php echo Select2::widget([
    'model' => $model,
    'attribute' => 'state_2',
    'data' => $data,
    'options' => ['placeholder' => 'Select a state ...'],
    'pluginOptions' => [
        'allowClear' => true,
    ],
]); ?>
Run Code Online (Sandbox Code Playgroud)

它显示以下错误:

PHP致命错误 - yii\base\ErrorException.找不到类'kartik\select2\Select2'

php widget composer-php yii2

25
推荐指数
1
解决办法
2万
查看次数