<?= Html::encode($message) ?>
这种写法比较古老,是一种缩写形式。
我看了下 我的php.ini 配置 short_open_tag = off
但是 竟然在YII 下 正常运行
感觉好奇怪,
你们不感觉奇怪么
求大姐 大哥 解释下。
官網寫的~~PHP5.4之後 都是可執行的
http://php.net/manual/en/ini.core.php
<?= Html::encode($message) ?>
这种写法比较古老,是一种缩写形式。
我看了下 我的php.ini 配置 short_open_tag = off
但是 竟然在YII 下 正常运行
感觉好奇怪,
你们不感觉奇怪么
求大姐 大哥 解释下。
官網寫的~~PHP5.4之後 都是可執行的
http://php.net/manual/en/ini.core.php
modules\article\views\admin\action.php代码
<script>
function checked($id){
var vals = $("#name").val();
var id=$id;
$.ajax({
type:'post',
url:"<?= yii\helpers\Url::to(['admin/up']) ?>",路径老是出错
data:{name:vals,id:id},
success:function(msg){
alert(msg);
//$("#name").val(vals);
}
});
}
</script>
<?= app\widgets\GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\CheckboxColumn'],
'title',
[
'attribute' => 'cate',
'format' => 'raw',
'value' => function($model){
return Html::dropDownList("cates[{$model->id}]",$model->cate,\common\models\Article::$cates,['id'=>'name','onchange' =>"checked($model->id)"]) ;
}
],
[
'class' => 'app\widgets\ActionColumn',
'template' => '{update} {view} {delete}',
],
]
])?>
modules\article\controllers\AdminController.php代码,我建了一个up方法,想通过它来修改ajax传过来的值
public function actionUp(){
}
请各位大神帮忙解决一下,哪里有问题,控制文件里帮忙完善起来。
你说的路径出错是报的是 404还是400。如果是400,提交的数据无法被验证的话,那无关路径,可能是yii本身开启了 csrf,只需关闭 csrf认证,或在ajax那里提交csrf 就可以了。
关闭方法,在你的 AdminController.php 里加入
你可以参考这个:http://www.yiichina.com/tutorial/449
<?= Url::to([‘admin/up’]) ?>
use yii\helpers\Url; 命名空间加到顶部
代码复制出来看下
这是异步调用 返回的是json 打印不出来的
admin/up&name=1&id=2 这个url访问看下
你访问的url复制出来看下
var_dump(‘11111111111111111111111111111111111111111111111111’); 改成 echo 1;die;
学习数据库保存中遇到了一个问题,控制器里的代码如下:
$entry = new EntryForm;
//如果是Post请求提交
if(Yii::$app->request->getIsPost()){
//表单模型设置属性为post值
$entry->setAttributes(Yii::$app->request->post());
//表单模型数据验证
if ($entry->validate()) {
//正确
$result = $entry->save();
var_dump($entry->attributes);
} else {
//返回错误提示
var_dump($entry->getErrors());
}
}else{
//如果不是Post请求,正常显示模板
return $this->render('entry',['model'=>$entry]);
}
最后能返回插入的id和数据,数据表里面相应的字段为空,只有id。
帖上EntryForm的代码:
<?php
namespace app\models;
use yii\db\ActiveRecord;
class EntryForm EXTENDS ActiveRecord{
public $name;
public $email;
public static function tableName()
{
return '{{user}}';
}
public function rules()
{
return [
[['name','email'],'required','message'=>'请填写!'],
['email','email','message'=>'邮箱格式不正确!'],
];
}
}
这里有问题,2.0的表前缀是`
{{%user}}
从yiisoft/yii2-app-advanced上clone下来文件运行失败,然后发现比yiichina提供的压缩包少了个vendor文件夹,复制过去后问题解决。
请问vendor文件夹是什么用的?为啥官方下载的反而没有提供?
突然翻到自己以前问的老问题,看到下面两个回答都说得很含糊,自己回复一下正解:vendor是composer下载的依赖库文件,yii2-app-advanced这个项目代码里,只有其自己的项目文件,而其依赖的yii框架等类库,都记录在composer.json里面,只要安装好composer,然后install或update一下就是可以了。
vendor,如其名字,是第三方提供的工具。
你下载的只是yii自身的代码。
需要配合必要的第三方工具才能正常运行。
具体安装方法,请参考你下载文档页面中的说明,或者查看本站文档中的安装一节。
上传到服务器,打开域名提示
Warning: require_once(D:\wwwroot\91zhai\wwwroot/../yii1/framework/yii.php) [function.require-once]: failed to open stream: No such file or directory in D:\wwwroot\91zhai\wwwroot\index.php on line 14
Fatal error: require_once() [function.require]: Failed opening required 'D:\wwwroot\91zhai\wwwroot/../yii1/framework/yii.php' (include_path='.;C:\php5\pear') in D:\wwwroot\91zhai\wwwroot\index.php on line 14
导入的两个文件在服务器路径和你本地路径不同。
你在本地和服务器上路径不一样吧。
$controllerID = Yii::$app->controller->id;
$actionID = Yii::$app->controller->action->id;
报错
PHP Notice – yii\base\ErrorException
Trying to get property of non-object
首先, 这两行代码没什么问题.
你肯定是用错了地方,
在module里面 实例化controller[createController] 之后, 才将controller绑定到Yii::$app
而绑定action到当前controller的节点 则在 controller runAction之后
因此 , 你在module没有执行 runAction 之前, Yii::$app->controller 是 null
所以 module 的 init 事件之前(包括init事件内), Yii::$app->controller 都是 null controller 的 beforeAction 事件之前(包括beforeACtion事件内), Yii::$app->controller->action 也是没值的;;;
调用的位置不对吧。
当前位置,没有那个对象.
在控制器和视图里都可以用的,在控制器里也可以直接用$this->controller->id获取~
不是就这样就可以了吗?Yii::$app->user->login($user, $this->rememberMe ? 3600 * 24 * 10 : 0)
我勾选记住登录,名字是_identity的cookie是有的,这是自动登陆的凭证吧?
我的怎么没用,还要做其他什么操作吗?
我用的就是Yii自带的那套。
user的配置:
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
'loginUrl' => ['user/login', 'ref' => 1],
'authTimeout' => 1800,
],
User实现的IdentityInterface接口代码如下:
/**
* 通过user id查找身份
*
* @param user_id $id
* @return Ambigous <\yii\db\static, NULL>
*/
public static function findIdentity($id)
{
return static::findOne ( [
'user_id' => $id,
'enabled' => self::STATE_ENABLED
] );
}
/**
* 用token查找身份,这个方法暂时没有用处
*
* @param string $token
* @param string $type
*/
public static function findIdentityByAccessToken($token, $type = null)
{
return null;
}
/**
* 取得可用用来验证用户身份的KEY,每个用户的key需要唯一
*
* @return string
*/
public function getAuthKey()
{
return null;
}
/**
* 取user id
*
* @return number
*/
public function getId()
{
return $this->user_id;
}
/**
* 验证authKey
*
* @param string $authKey
* @return boolean
*/
public function validateAuthKey($authKey)
{
return $this->getAuthKey () === $authKey;
}
搞定:
$cookie->value = json_encode([
$identity->getId(),
$identity->getAuthKey(),
$duration,
], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
应用配置里面,对component[‘user’]的配置代码贴一下。
如果是你们自己实现的Identity类,把实现IdentityInterface的类代码也需要贴一下。这样才好方便你诊断问题。
我的没修改过,系统默认就支持记住14天。
确认下浏览器开启了cookie
回复见下面,莫名其妙提交两遍..
$this->updateAll($data, $where);
$data = [‘groupid’=>1];
//如 条件为 province=1, city=2
$where = [‘province’=>1, ‘city’=>2];
还想加个id in(1,2,3) 的条件进去 请教下怎么写
$where = ['province' => 1, 'city' => 2, 'id' => [1, 2, 3]]
Yii\db\Query
下面是官網的範例:
Where 使用方法可以詳閱
http://www.yiiframework.com/doc-2.0/yii-db-query.html
如果是小于,怎么写呢,大佬
view中代码如下:img为model中的字段
<?= GridView::widget([
'model' => $model,
'tableOptions'=>['class'=>'table table-striped table-hover'],
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
[
'attribute'=>'img',
'format' => ['image',['width'=>'30','height'=>'30',]],
],
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
判断img属性是否为空,根据结果输出图片或提示
你好,这个$model是哪儿来的啊,我的怎么是未定义????
在本地一切访问正常,用git上传到服务器后会访问index.php出现空白,访问其他文件会报404的错误。
你可以看看 vendor 這檔案還在不在
通常在 .gitignore
這檔案裡面 會預設禁止上傳
或是你用了 dist 檔案夾裡的 js 也會有可能
信息量太少…
服务上初始化了没? 开下debug试试。