我正在添加动态表单字段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) 嗨伙计们,我很困惑一件事
我想写下面的查询,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条记录.
我想在前端和后端访问我的css和javascript文件.
所以,我的问题是我放置css和javascript文件,以便它们可以访问前端和后端.
或者有没有办法重用 文件,即我把我的CSS文件放在后端的web文件夹中,并在前端使用它.
谢谢
这是我的堆栈跟踪:
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) 我在当前的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) 我想使用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) 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) 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)
我怎样才能做到这一点?
我正在尝试在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创建了一个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"..而不是文本..(因此用户可以使用浏览器向上/向下按钮更改值).有什么办法吗?