标签: yii2-basic-app

如何在Yii2的动态模型中添加自定义验证功能?

我在yii2基本应用程序中使用动态模型。

以下是我的动态模型的代码。

$model = new \yii\base\DynamicModel([
        'role', 'from_rm', 'to_rm', 'user1_subdistrcts'
    ]);
    $model->addRule(['user1_subdistrcts', 'role'], 'required', ['message' => "Please select this field."])
->addRule(['from_rm'], 'checkRm');
Run Code Online (Sandbox Code Playgroud)

在这里,我愿意为用户自定义验证功能'checkRm'表单from_rm字段,我也已经定义了checkRm函数,如下所示:

public function checkRm($from_rm, $params)
{
    $this->addError($from_rm, 'Please Select Regional Manager.');
}
Run Code Online (Sandbox Code Playgroud)

但是当我提交表格时我发现错误Class CheckRm没找到

现在,请帮助如何在动态模型中使用自定义验证。

我也试过了whenwhenClient但条件也没用

php yii2 yii2-basic-app yii2-model

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

如何在 Yii2 表单错误摘要中显示 HTML 标签

我试图在登录时显示错误消息中的链接,但它不起作用。

验证中的错误消息LoginForm

$this->addError($attribute, 'Your account has been disabled. <a href=""> Enable It</a>');
Run Code Online (Sandbox Code Playgroud)

login.php(视图)中:

<?= $form->errorSummary($model); ?>
Run Code Online (Sandbox Code Playgroud)

我试过如下,但不工作:

 <?= $form->errorSummary($model,['errorOptions' => ['encode' => false,'class' => 'help-block']]); ?>
Run Code Online (Sandbox Code Playgroud)

我得到以下输出而不是渲染a标签:

错误总结

yii2 yii2-advanced-app yii2-basic-app yii2-model yii2-validation

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

删除不起作用方法不允许(#405)gridview yii2

这是我的网格视图,我从类更改actionColumn为:

[   'format' => 'html',
            'contentOptions'=>['style'=>'width: 5px;'],
            'value' => function($model) {
                if($model->id == Yii::$app->user->identity->id) {
                    return  Html::a('<i class="glyphicon glyphicon-share-alt"></i>').' '. 
                            Html::a('<i class="glyphicon glyphicon-pencil"></i>', ['update', 'id' => $model->id]).' '.
                            Html::a('<i class="glyphicon glyphicon-trash"></i>', ['delete', 'id' => $model->id], ['data' => ['confirm' => 'Do you really want to delete this element?','method' => 'post']]);
                }
                return '';
            },
        ],
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误。

Method Not Allowed (#405)

Method Not Allowed. This url can only handle the following request methods: POST. 
Run Code Online (Sandbox Code Playgroud)

当我actionColumn再次更改它时,它可以正常工作,但是我更改了代码,这只是给我一个错误。

jquery yii2 yii2-advanced-app yii2-basic-app

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

如何创建在yii2中传递两个参数的绝对值

我是Yii2的新手.请帮我实现这个目标.我想知道如何在yii2中创建absoluteurl.我已经尝试了下面给出的代码,但我想要一些不同的东西.

echo Yii::$app->urlManager->createAbsoluteUrl(['site/confirm', 'id' => $user->id,'code' => $user->token,'&']);
output is http://car-rental.demoinja.com/site/confirm/69?code=275a9253dfc81efa47be4fdf1fc6a927&1=%26
Run Code Online (Sandbox Code Playgroud)

但我想要这样的网址

http://car-rental.demoinja.com/site/confirm/?id=69&code=275a9253dfc81efa47be4fdf1fc6a927
Run Code Online (Sandbox Code Playgroud)

php yii2 yii2-basic-app

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

在 Yii2 的 url 中为静态页面显示子目录名称

我正在使用 Yii2 为客户端创建静态页面。我正在使用 yii2,因为客户端有一些其他要求,以便稍后扩展网络。我使用 Yii2 Basic 应用程序。yii2 basic 有默认页面,如 about、contact 等。启用漂亮 url 后这些页面的 url 是

 www.example.com/about
Run Code Online (Sandbox Code Playgroud)

等等

现在我需要创建页面

“xyz.php”

在子目录下像

“ABC”

. 所以我需要我的网址www.example.com/abc/xyz

我如何实现这一目标?被告知我是一个学习者,我遵循了 url 规则,帮助者但没有找到一个强有力的解决方案。

yii2 yii2-basic-app

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

Gridview 函数 yii2 中的访问变量

我正在尝试访问视图文件上的变量,Gridview但它抛出了it should be array but null given我在$totalDays视图文件顶部声明的错误,我正在使用它,Gridview如下所示

[
            'attribute' =>  'class_id',
            'format' => 'raw',
            'label' => "Class Date",
            'value' => function ($model) {
                array_push($totalDays,$model->class->date);
                return $model->class->date;
            },
            'footer'=> '<span>Total Days</span>',
],
Run Code Online (Sandbox Code Playgroud)

但它抛出以下错误

array_push() 期望参数 1 是数组,给定 null

php yii2 yii2-advanced-app yii2-basic-app

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

无效的验证规则:在 Yii2 中,规则必须同时指定属性名称和验证器类型

在我的基本应用项目中,我正在尝试集成注册表单,但出现此错误:

无效的验证规则:规则必须同时指定属性名称和验证器类型。

我的代码在这里。

注册表格.php

<?php
namespace app\models;
use yii\base\Model;
use app\models\User;

/**
 * Signup form
 */
class SignupForm extends Model
{
    public $user_fname;
    public $user_email;
    public $user_password_hash;
    /**
     * @inheritdoc
     */


    public function rules()
    {
        return [
            [['user_fname','user_email', 'user_password_hash'], 'required'],
            // rememberMe must be a boolean value

            ['user_password_hash','match','pattern'=>'$\S*(?=\S*[a-z])(?=\S*[A-Z])(?=\S*[\d])\S*$','message'=>'Password must have atleast 1 uppercase and 1 number '],
            [['user_password_hash'],'string','min'=>6],
            //email validation
            ['user_email','email']
            [['user_email'], 'string', 'max' => 255],
            [['user_fname'], 'string', 'max' => 45],
        ];
    }
    /**
     * Signs user up.
     *
     * …
Run Code Online (Sandbox Code Playgroud)

yii2 yii2-user yii2-basic-app yii2-validation

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

将 yii2 RBAC 与规则类一起使用时,如何控制 yii2 GridView 的 ActionColumn 中按钮的可见性?

我了解 ActionColumn 按钮的可见性可以这样控制:

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

            'id',
            'title',
            'body:ntext',

            // ['class' => 'yii\grid\ActionColumn'],
            [
            'class' => 'yii\grid\ActionColumn',
            'visibleButtons' =>
            [
                'update' => Yii::$app->user->can('updatePost'),
                'delete' => Yii::$app->user->can('updatePost')
            ]

          ],
        ],
    ]);
?>
Run Code Online (Sandbox Code Playgroud)

我已经创建了 RBAC 授权,以及一个基于 yii2 文档的 AuthorRule Rule 类
http://www.yiiframework.com/doc-2.0/guide-security-authorization.html

在 roleParams 的情况下,我已经实现了如下(在视图模板中):

if (\Yii::$app->user->can('updatePost', ['post' =>$model]){
//if the post is created by current user then do this
}
Run Code Online (Sandbox Code Playgroud)

如何找出 GridView 小部件中的模型或至少 id 以便我执行以下操作:

    'visibleButtons' =>
    [
        'update' => …
Run Code Online (Sandbox Code Playgroud)

yii2 yii2-basic-app yii2-rbac

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

如何在yii2查询构建器中基于子查询在where条件中编写if条件

我在主查询中有一个子查询,如下所示:

$subquery = (new Query())->select('COUNT(project_sup_id)')
    ->from('project_supervisors AS sup')
    ->where(['AND','sup.project_ref_id = p.project_id']);

$uQuery =(new Query())->select(['project_id','supcount' => $subquery])
    ->from('projects AS p')
    ->join('LEFT JOIN','project_supervisors AS sup','sup.project_ref_id = project_id')
    ->andWhere('IF(supcount>0, sup_project_status=1, project_status=1)');
Run Code Online (Sandbox Code Playgroud)

我正在尝试根据逻辑编写 where 条件,即,如果从子查询获得的计数大于零,则 where 条件必须为sup_project_status=1else project_status=1。在普通的Mysql中,很容易在where里面写if条件,但在yii2中我不明白如何写。

yii yii2 yii2-advanced-app yii2-basic-app yii2-model

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

yii2中单个控制器(模块)的漂亮URL

假设我的申请路径是: -

http://www.example.com/index.php?r=dashboard/event/view
Run Code Online (Sandbox Code Playgroud)

我创建了一个新的控制器,我想将URL更改为漂亮的URL.

新控制器的默认URL

http://www.example.com/index.php?r=newcontroller/view?id=23&name=urlpretty
Run Code Online (Sandbox Code Playgroud)

我想将上面的URL设置为漂亮的URL,例如

http://www.example.com/23/sampleprettyurl
Run Code Online (Sandbox Code Playgroud)

但我不想将完整的应用程序URL路径更改为漂亮的URL.我的其他控制器路径/ URL应该正常工作.

提前致谢

yii yii2 yii2-advanced-app yii2-basic-app

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