$model = WxReply::findOne(['in','id',$ids]);
$model = WxReply::find()->where(['in','id',$ids])->One();
上面的代码查找不到,下面的才行,为什么?
$model = WxReply::findOne(1); findOne
是查询1条记录。里面直接写id就可以。$model = WxReply::findOne(['id'=>$ids]);
这样呢?
$model = WxReply::findOne(['in','id',$ids]);
$model = WxReply::find()->where(['in','id',$ids])->One();
上面的代码查找不到,下面的才行,为什么?
$model = WxReply::findOne(1); findOne
是查询1条记录。里面直接写id就可以。$model = WxReply::findOne(['id'=>$ids]);
这样呢?
http://admin.myblog.com/article/article/index 这是我的一个文章列表连接 明显多了一个 article 但是除掉又不行。。报未找到。 解析流程我想是 第一个 article是找到config配置文件 找到了类
article' => ['class' => 'app\modules\article\Module',],
然后根类找到$controllerNamespace
接下来自然而然的 就找到了 /article/index 这样完成了一个模块访问,
那么问题就来了。url不够简洁。求各位大神解惑。
config文件配置
'modules' => [
'article' => ['class' => 'app\modules\article\Module',],
],
这是module.php
<?php
namespace app\modules\article;
/**
* article module definition class
*/
class Module extends \yii\base\Module
{
/**
* @inheritdoc
*/
public $controllerNamespace = 'app\modules\article\controllers';
/**
* @inheritdoc
*/
public function init()
{
parent::init();
// custom initialization code goes here
}
}
它url出现这个article/article/index,中间这个是控制器名称,你把这个article控制器改成 index 也是个解决办法
这不算是有重,两个article的意义不一样,只是因为你把两个取了一样的名字。
个别路径要调整你可以指定别名,比如用art代替 article/article 。
如果量多,修改路由转发规则
没看太明白,不过我感觉你需要的是/article
,url路由要/
开头,不然的话是相对路由,如果你当前已经在article模块,就会再出一个article
模块入口
<?php
namespace app\modules\api;
use yii\base\Module;
use yii;
class ApiModule extends Module
{
public function init()
{
parent::init();
yii::$app->response->format = yii\web\Response::FORMAT_JSON;
yii::configure($this, require(__DIR__ . '/config/main.php'));
}
}
模块控制器
<?php
namespace app\modules\api\controllers;
use yii;
use yii\web\Controller;
class IndexController extends Controller
{
public function actionIndex()
{
return (array) yii::$app->params;
}
}
模块的配置
<?php
return [
'components' => [
],
'params' => [
'id' => 5
]
];
为什么 yii::configure 没有生效,yii::$app->params
打印出来 是父级的值
先获取模块实例再访问模块配置!
模块的配置你用应用实例去获取当然获取不到
同问,我遇到了模块自定义配置不能生效的问题
因为前台有些操作需要用到model类,和后台操作一致,不想在前台再创建一次model,
有没有什么方法是直接可以调用后台model的。。。。
论坛上有回答说是use (use backend\models\article\Article)?这样不对的。。请解。谢谢。
不对是指什么意思?
你的Article类的namespace到底是“backend\models\article”还是“app\models\article”?你可能没有完全理解namespace的作用。。
楼主解决了吗?? 我现在也是跟你一样的问题
Unable to find ‘backend\models\Category’ in file: D:\phpStudy\WWW\yii2/backend/models/Category.php. Namespace missing?
ActiveForm 和 beginForm 有什么区别?
区别都体现在字面意思上了。
ActiveForm,默认包含了完整的form标签。
beginForm,只是form标签的开始部分
PHP Fatal Error – yii\base\ErrorException
Call to undefined method common\models\User::findIdentity()
在执行项目之后:SiteController -> render( index )
执行layout main 文件,调用 Yii::$app->user->isGuest;
报错是: 调用未知的方法 -》 common\models\User::findIdentity() ;
what ?
common\models\User
看看有沒有 findIdentity()
先
某個地方有調用到 common\models\User :: findIdentity()
你在錯誤內容下面看一下. 是哪裡執行的
使用驼峰命名控制器和方法,如何在url使用
控制器名字ConNameController.php
public function actionActionName() {
echo 'hello world';
}
怎么设置才能是路由是 /conname/actionname
这个事情很难做,你可以查看源码Module.php 560行,其内容如下:
可以看到’-‘是直接写在里面的,除非你要修改源码,或者将相关的内容都覆盖掉(如继承Application,重写相应的方法,但不排除会造成其他bug)
注:这里只列出了controller名字解析的地方
https://github.com/yiisoft/yii2/blob/master/framework/base/Module.php#L560
。。。你这个问题问的太不详细了
控制器名字ConnameController.php,action名actionActionname
con-name ?
醉了醉了醉了…
actionActionname ?
<?php
namespace app\models;
use yii\base\Model;
class EntryForm extends Model
{
public $name;
public $email;
public function rules()
{
return [
[['name', 'email'], 'required'],
['email', 'email'],
];
}
}
一个是email字段,一个是验证是否是email
第一个是必填,第二个是验证格式
use Yii;
use yii\web\Controller;
别人写的框架,不是你写的;当然,你要是觉得第一个大写不好看,你可以自己写框架,自己定义基础类;
(^__^) 嘻嘻
http://www.yiichina.com/doc
文档多看看,都是些基础性知识.
找下度娘,都有答案.
规范化,定制化
我在练习权威手册上的form表单,我打完代码之后看了眼浏览器,表单的name显示的是model层的名字,1.这个是为啥呢。2.我要怎么才能设置form表单的name呀
直接在属性配置里(options)头写name就行
在from的model里面,实现attributeLabels()方法。比如