标签: yii2-advanced-app

YII2:添加动态表单字段及其验证

我正在添加动态表单字段onChange of dropdown.两种类型的字段都来自不同的模型,并在不同的表中转到数据库.我已经在模型中定义了验证规则.

但验证工作不正常.我的代码如下:

型号:

<?php

namespace common\models;

use Yii;

/**
 * This is the model class for table "{{%membership_features}}".
 *
 * @property integer $id
 * @property string $title
 * @property string $type
 * @property integer $is_new
 * @property integer $status
 * @property integer $is_deleted
 * @property string $created_date
 * @property string $modified_date
 *
 * @property MembershipFeaturesValue[] $membershipFeaturesValues
 */
class MembershipFeatures extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */

    public $value=[];
    public static function tableName()
    {
        return '{{%membership_features}}';
    }

    /**
     * …
Run Code Online (Sandbox Code Playgroud)

php dynamic yii2 yii2-advanced-app

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

在yii2中按rand()排序

嗨伙计们,我很困惑一件事

我想写下面的查询,yii2但我无法得到预期的输出

SELECT * FROM user where category_id=5 ORDER BY rand() LIMIT 4
Run Code Online (Sandbox Code Playgroud)

为此,我做了以下

$data= User::find()->where(['category_id'=> 5])->orderBy(['rand()'])->limit(4);
Run Code Online (Sandbox Code Playgroud)

但它会生成如下命令

SELECT * FROM `user` WHERE `category_id`=5 ORDER BY `0` LIMIT 4
Run Code Online (Sandbox Code Playgroud)

哪个不是有效的mysql语句,那么我该如何才能使查询正确?

我的目标是从user表中获取任意随机的4条记录.

mysql yii2 yii2-advanced-app yii2-basic-app

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

在yii2高级中放置共同资源的位置?

我想在前端后端访问我的cssjavascript文件.

所以,我的问题是我放置cssjavascript文件,以便它们可以访问前端和后端.

或者有没有办法重用 文件,即我把我的CSS文件放在后端的web文件夹中,并在前端使用它.

谢谢

php yii yii2 yii2-advanced-app

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

在yii2中迁移时,异常'无法找到驱动程序'

这是我的堆栈跟踪:

  Exception 'yii\db\Exception' with message 'could not find driver'

in /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Connection.php:534

#0 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Connection.php(836): yii\db\Connection->open()
        #1 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Connection.php(823): yii\db\Connection->getMasterPdo()
        #2 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Command.php(208): yii\db\Connection->getSlavePdo()
        #3 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Command.php(816): yii\db\Command->prepare(true)
        #4 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Command.php(350): yii\db\Command->queryInternal('fetchAll', NULL)
        #5 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/mysql/Schema.php(198): yii\db\Command->queryAll()
        #6 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/mysql/Schema.php(97): yii\db\mysql\Schema->findColumns(Object(yii\db\TableSchema))
        #7 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/db/Schema.php(140): yii\db\mysql\Schema->loadTableSchema('migration')
        #8 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/controllers/MigrateController.php(121): yii\db\Schema->getTableSchema('{{%migration}}', true)
        #9 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(610): yii\console\controllers\MigrateController->getMigrationHistory(NULL)
        #10 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(102): yii\console\controllers\BaseMigrateController->getNewMigrations()
        #11 [internal function]: yii\console\controllers\BaseMigrateController->actionUp(0)
        #12 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/base/InlineAction.php(55): call_user_func_array(Array, Array)
        #13 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/base/Controller.php(151): yii\base\InlineAction->runWithParams(Array)
        #14 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/Controller.php(91): yii\base\Controller->runAction('', Array)
        #15 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/base/Module.php(455): yii\console\Controller->runAction('', Array)
        #16 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/Application.php(161): yii\base\Module->runAction('migrate', Array)
        #17 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/console/Application.php(137): yii\console\Application->runAction('migrate', Array)
        #18 /opt/lampp/htdocs/advanced/vendor/yiisoft/yii2/base/Application.php(375): yii\console\Application->handleRequest(Object(yii\console\Request))
        #19 /opt/lampp/htdocs/advanced/yii(31): yii\base\Application->run()
        #20 …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo yii2 yii2-advanced-app

10
推荐指数
2
解决办法
3万
查看次数

如何在Yii2中创建可重用的小部件

我在当前的项目中了一个简单的小部件.简单地说,它为所有jui主题创建一个选择选项列表,并允许用户更改主题并将其保存为cookie的意思.

这个小部件需要两个javascript文件, - 它们在run()中注册 - 其中一个是jquery cookies插件.我问的是如何保存这个小部件及其js文件的完整性,以便在其他Yii2项目中轻松重用,而不需要复制所有需要的js文件?

<?php
namespace common\libs;

use yii;
use yii\base\Widget;
use yii\web\View;
use yii\web\JqueryAsset;
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of JuiThemeSelectWidget
 *
 * @author Said Bakr
 */
class JuiThemeSelectWidget extends Widget
{
  private $list;
  private $script;
  private static $juiThemeSelectId = 'JuiThemesList';
  public …
Run Code Online (Sandbox Code Playgroud)

php widget yii2 yii2-advanced-app

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

Yii2 Pjax无法正常工作

我想使用Pjax刷新gridview但不知何故它不起作用.这是代码:

_search.php

    <?php

use yii\helpers\Html;
use yii\widgets\ActiveForm;
use yii\widgets\Pjax;

$this->registerJs("
                  $('#btnAjaxSearch').click(function(){
                        $.ajax({
                                type: 'get',
                                data: $('.bank-search form').serializeArray(),
                                success: function (data) {
                                      $.pjax.reload({container:\"#bank\"});
                                },
                                error: function (XMLHttpRequest, textStatus, errorThrown) {
                                      alert('error');
                                }
                        });
                       return false;
                  });
                ", \yii\web\View::POS_END, 'bank-search');
?>

<div class="bank-search">
    <?php Pjax::begin(['id' => 'bank-form']); ?>
    <?php $form = ActiveForm::begin([
        'action' => ['index'],
        'method' => 'get',
    ]); ?>

    <?= $form->field($model, 'bank_name') ?>

    <?= $form->field($model, 'state') ?>

    <?= $form->field($model, 'district') ?>

    <?= $form->field($model, 'city') ?>

    <div class="form-group">
        <?= Html::Button('Search', ['class' => …
Run Code Online (Sandbox Code Playgroud)

pjax yii2 yii2-advanced-app

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

Yii 2 RESTful API使用OAuth2进行身份验证(Yii 2高级模板)

REST API无需身份验证方法即可运行.现在,我想通过移动应用程序对API请求的OAuth2身份验证验证REST API.我试过yii2指南,但它对我不起作用.

基本上移动用户需要使用用户名和密码登录,如果用户名和密码正确,则用户需要登录,并且需要使用令牌进一步验证API请求.

我是否需要像这样创建自定义OAuth 2客户端? 创建自己的auth客户端

用户表中的access_token字段为空.我需要手动保存吗?如何将access_token作为响应返回?

用户是否有任何理由同时使用这三种方法(HttpBasicAuth,HttpBearerAuth,QueryParamAuth),为什么?怎么样?

我的应用程序文件夹结构如下所示.

api
-config
-modules
--v1
---controllers
---models
-runtime
-tests
-web

backend
common
console
environments
frontend
Run Code Online (Sandbox Code Playgroud)

API \模块\ V1\Module.php

namespace api\modules\v1;
class Module extends \yii\base\Module
{
    public $controllerNamespace = 'api\modules\v1\controllers';

    public function init()
    {
        parent::init(); 
        \Yii::$app->user->enableSession = false;       
    }   
}
Run Code Online (Sandbox Code Playgroud)

API \模块\ V1 \控制器\ CountryController.php

namespace api\modules\v1\controllers;
use Yii;
use yii\rest\ActiveController;
use common\models\LoginForm;
use common\models\User;
use yii\filters\auth\CompositeAuth;
use yii\filters\auth\HttpBasicAuth;
use yii\filters\auth\HttpBearerAuth;
use yii\filters\auth\QueryParamAuth;

/**
 * Country Controller API
 *
 * @author Budi …
Run Code Online (Sandbox Code Playgroud)

api rest oauth-2.0 yii2 yii2-advanced-app

9
推荐指数
2
解决办法
6578
查看次数

Yii2如何向脚本标记添加参数

JS声明获取渲染看起来像这样:

<script src="/assets/a00ccd3f/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

我需要添加async="async"标签.

所以看起来应该是这样的

<script src="/assets/a00ccd3f/jquery.min.js" async="async" ></script>
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

php jquery yii2 yii2-advanced-app

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

Yii2 REST在POST,PUT等上提供405

我正在尝试在Yii2高级应用程序中构建REST API,以管理对我的数据库的简单查询.在一些教程之后,最后逐步构建指南中的示例,在"快速入门"中,让我的模型适用于GET和HEAD方法.

在模块中创建我的API服务,使用最少的设置正确设置,在backend/main.php上请求JSON解析器,在common/main.php中注册模块并在urlManager中创建规则(在最小的通常规则下面,enablePrettyUrl ,控制器/动作,......):

['class' => 'yii\rest\UrlRule', 'controller' => ['precapi']]
Run Code Online (Sandbox Code Playgroud)

但每当我尝试其他方法时,通过CURL或Postman REST Client,它总会给我一个405错误:

方法不允许.此URL只能处理以下请求方法:GET,HEAD.

我想我已经尝试了很多不同的配置和路径试图解决它,但没有任何结果.唯一的问题是'enableStrictParsing' => false'在urlManager中,因为它在某些URL上给出了404错误,而POST也不能用于此,尽管应用程序正常工作.

任何帮助将不胜感激.问候.

yii2 yii2-advanced-app

9
推荐指数
2
解决办法
8655
查看次数

yii2 ActiveForm数字文本字段

我使用yii2创建了一个ActiveForm,如下所示:

                            <?=$form->field($item, 'finalPrice', [
                                'options' => [
                                    'tag' => 'div',
                                    'class' => '',
                                ],
                                'template' => '<span class="col-md-2 col-lg-2"><label class="control-label">Final item price</label>{input}{error}</span>'
                            ])->textInput([
                                 // ** i want numeric value **
                            ])->label(false)?>
Run Code Online (Sandbox Code Playgroud)

它产生了以下结果:

<span class="col-md-2 col-lg-2"><label class="control-label">Final item price</label><input type="text" id="item-finalprice" class="form-control" name="Item[finalPrice]"><p class="help-block help-block-error"></p></span>
Run Code Online (Sandbox Code Playgroud)

现在我想让它<input type ="number"..而不是文本..(因此用户可以使用浏览器向上/向下按钮更改值).有什么办法吗?

yii2 active-form yii2-advanced-app

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

标签 统计

yii2 ×10

yii2-advanced-app ×10

php ×5

mysql ×2

active-form ×1

api ×1

dynamic ×1

jquery ×1

oauth-2.0 ×1

pdo ×1

pjax ×1

rest ×1

widget ×1

yii ×1

yii2-basic-app ×1