目前我的表单是通过 GridView
生成的,还用了 Pjax
,我的表单有一个状态修改的操作是通过点击触发 ajax
修改的,当触发了 Pjax
局部刷新的效果之后,这个点击事件就没有效果了。还请各位大神,帮帮忙。
js代码:
如果是使用类似这样的匿名函数:
那么myid对应的html元素被ajax的返回值替换后将失效,需要重新在替换内容的语句之后再执行一次。
或者在html的元素中使用onclick
属性,点击事件调用命名函数。
异步的问题吧··
目前我的表单是通过 GridView
生成的,还用了 Pjax
,我的表单有一个状态修改的操作是通过点击触发 ajax
修改的,当触发了 Pjax
局部刷新的效果之后,这个点击事件就没有效果了。还请各位大神,帮帮忙。
js代码:
如果是使用类似这样的匿名函数:
那么myid对应的html元素被ajax的返回值替换后将失效,需要重新在替换内容的语句之后再执行一次。
或者在html的元素中使用onclick
属性,点击事件调用命名函数。
异步的问题吧··
$tradeList = \common\models\Trade::find()->select('id,name')->all();
$trades = \yii\helpers\ArrayHelper::map($tradeList, 'id', 'name');
<?= $form->field($model, 'trade_ids')->checkboxList($trades) ?>
修改的时候 如果trade_ids是 ,29,30, 数据就显示不出来 如果是 ,29 就可以显示并选中 怎么搞定他
$model->trade_ids
是否是逗号分隔字符串,如果是,请用explode(',',$trade_ids)
将其转换为一个数组。关于checkboxList的详细用法见:http://www.yiichina.com/doc/guide/2.0/helper-html
你的trade_ids 用逗号分隔的? 这样当然不行…
如果你的 $model 是 \common\models\Trade 的实例.$form->field($model, 'trade_ids')
换成 $form->field($model, 'id')
不是的话就……
背景是这样的,最开始开发的时候没有做restful和版本控制
控制器在frontend/controllers/
模型frontend/models/
现在想新开发的功能开始用restful 和 版本控制
并且能将以前的也兼容到restful里
求一份配置文件
$params = array_merge(
require(__DIR__ . '/../../common/config/params.php'),
require(__DIR__ . '/../../common/config/params-local.php'),
require(__DIR__ . '/params.php'),
require(__DIR__ . '/params-local.php')
);
return [
'id' => 'app-frontend',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
#'controllerNamespace' => 'frontend\controllers',
'controllerNamespace' => 'frontend\common\controllers',
'modules' => [
'v1' => [
'basePath' => '@frontend/modules/v1',
],
'v2' => [
'basePath' => '@frontend/modules/v2',
],
],
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
['class' => 'yii\rest\UrlRule', 'controller' => ['user', 'user']],
['class' => 'yii\rest\UrlRule', 'controller' => ['v1/test', 'v1/post']],
['class' => 'yii\rest\UrlRule', 'controller' => ['v2/test', 'v2/post']],
],
],
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'errorHandler' => [
'errorAction' => 'site/error',
],
],
'params' => $params,
];
我是克隆了frontend对应的配置,然后将main.php改成这样子的:
粗体
控制器代码:
if ($model->load(Yii::$app->request->post()) ) {
$model->trade_ids = implode(',',$_POST['Articles']['trade_ids']);
//$model->trade_ids = '24,25';
if($model->save()){
return $this->succ();
}else{
echo '错误';
}
}
implode之后,$model->trade_ids =’24,25,26’这种格式的,这样是添加不上的,$model->trade_ids = ’24’; 这样是可以保存的。能帮忙解决一下吗?
會不會是你 models 設定的 rules 規則不符!!?
你可以用 $model->errors;
印出來錯誤看看
你把,
换成别的分隔符试下
没错误信息,也不好确定问题在哪。
看这情况, 最大的可能就是 : trade_ids
验证规则设成了 integer
看你错误信息,你提交的数据还是数组,不是字符串。
教程上是写的
$user = new User;
$user->username = "1234";
$user->telephone = "123456";
$user->insert();
这样就能插入一条数据了,但是我这里没有反应,后来我只能写成
$user->insert('user',['username','telephone'],["1234","123456"]);
这样才能插入数据
另外,如果想update数据,该怎么写呢,$user->update()
也用不了
是save()
`
$user = new User;
$user->username = “1234”;
$user->telephone = “123456”;
$user->save();
`
更新的话,你先查找,然后设置值之后可以直接save
最近想导入Excel格式的文件,主要是xls的,希望兼容.et和xlsx的Excel文件,但是只有xlsx的格式可以顺利导入啊。
我的代码rules如下:finfo_file(/opt/lampp/temp/phphsrimj): failed to open stream: 没有那个文件或目录
public function rules()
{
return [
['file', 'required'],
// file has to be a valid excel file
[['file'], 'file', 'extensions' => 'jpg, gif, et, xls, xlsx', 'maxSize'=>1024*1024*20],
];
}
经测试,jpg,gif,xlsx都是可以的,唯独xls跟et不行。哪位可有良策,哪怕最后可以加入xls,不需要et都行。先谢谢啦。
http://www.yiichina.com/doc/guide/2.0/tutorial-core-validators 按道理是可以 这个里面都写了
if($endtime > $starttime){
$model->starttime = $starttime;
$model->endtime = $endtime;
if($model->save()){
return $this->succ();
}
}else{
//在本页提示开始时间不得大于结束时间
}
开始时间和结束时间都已接受过来,并且转换成时间戳格式,如果开始时间大于结束时间,在修改页面显示提示信息:开始时间不得大于结束时间
我估计你是想这样吧?请看:
所以你的问题呢?
兩種方法 (建議第一種比較好)
第一種:
比較建議你在前端 javascript 的時候就寫 js 去達成效果(選擇開始時間後 結束時間就只能選擇開始時間之後的時間)
套件都可以去設定 或者自行寫程式
第二種:
不然就是把你要判定的規則寫在models裡 —- 舉例如下 :
用ajax 去呼叫 或者送出後從表單回傳錯誤訊息回去
想在這假日 搞清楚 Yii如何使用:Yii::$app 這個會跑出 object( yii\web\Application )
想知道他的做法 不知道各位有沒有甚麼參考文件
我網路上搜尋 都找不太到類似的文件 我也很願意看源碼
但不知道從哪邊下手 請問有甚麼能提供我的資訊!!(或是建議)
台胞? 看得我好费劲 …… 哈哈
先说 Yii::$app
的奥秘 :
看 \yii\web\Application
这个抽象类的构造函数,
第一句就是 : Yii::$app = $this;
, 就是在这里完成的绑定;
至于 如何阅读源码;
我觉得 不要为了阅读源码而阅读源码…
最好的方式是 实际使用中, 哪里出问题了, 哪里不清楚了, 去框架源码内追踪, 查看;
这样以点带面, 慢慢扩散开, 慢慢就理清了.
问题1:在使用session时候用不用写session->open()
因为我写的时候无论有没有session->open()都可以用session
问题2:当我设置了$session->setCookieParams(['lifetime'=>'1200']);
session的时间是不是就是20分钟(1200s)?
问题3,当我使用session记录我的登录状态,并想退出的时候,我使用 $session->destroy();
并没有用,最后我只能使用,$session->removeall();
来删除我刚刚用session记录的数据,但是这样只是删除了数据,session并没有被销毁啊
问题3,session删除了数据 不等于 销毁 ?
session的作用不就是保存数据,数据都删除了,留下一个id,又有何用?
问题2,session时间默认是服务器上配置的
看了下SQL默认没有排序,怎么做到默认id desc?
public function actionIndex()
{
$sort = new Sort([
'attributes' => [
'id' => [
'desc' => ['id'=>SORT_DESC],
'asc' => ['id'=>SORT_ASC],
'default' => SORT_DESC,
'label' =>'#Id',
],
'hot' => [
'asc' => ['hot'=>SORT_ASC],
'desc' => ['hot'=>SORT_DESC],
'label' =>'#即时热度',
],
'add_hot' => [
'asc' => ['add_hot'=>SORT_ASC],
'desc' => ['add_hot'=>SORT_DESC],
'label' =>'#增减热度',
],
],
]);
$query = Dynamic::find();
$pages = new Pagination([
'defaultPageSize' => 10,
'totalCount' => $query->count(),
]);
$models = $query
->where(['status' => 0])
->orderBy($sort->orders)
->offset($pages->offset)
->limit($pages->limit)
->all();
return $this->render('index',[
'models' => $models,
'sort' => $sort,
'pages' => $pages,
]);
}
$query = Dynamic::find()->orderBy(['id' => SORT_DESC]);
请问,我设置一个默认排序后,想在前台页面自己点击某个head是自动排序(升或降)?如何写?模仿你的默认会写了,谢谢!
mark,非常感谢