在Yii框架中保存和更新多对多关系的方法是什么?
我试图通过执行来制作一个yii项目进行测试
/var/www/html/yii/framework/yiic webapp demo
Run Code Online (Sandbox Code Playgroud)
当我去localhost/demo时,我得到了错误:
Application runtime path "/var/www/html/demo/protected/runtime" is not valid.
Please make sure it is a directory writable by the Web server process.
Run Code Online (Sandbox Code Playgroud)
起初我以为它确实不可写,所以我做了:
chmod 777 /var/www/html/demo/protected/runtime
Run Code Online (Sandbox Code Playgroud)
没有工作,所以我执行的最后一个想法:
chmod 777 -R /var/www/html/demo/
Run Code Online (Sandbox Code Playgroud)
我仍然得到同样的例外.关于可能出错的任何想法?
- -编辑 - -
FFS这让我疯狂
drwxrwxrwx. 4 apache apache 4096 Jun 5 00:06 commands
drwxrwxrwx. 3 apache apache 4096 Jun 5 00:06 components
drwxrwxrwx. 3 apache apache 4096 Jun 5 00:06 config
drwxrwxrwx. 3 apache apache 4096 Jun 5 00:06 controllers
drwxrwxrwx. 3 apache apache …Run Code Online (Sandbox Code Playgroud) 我有一个gridview,其中包含一个复选框列,并使用分页.当我检查第一页中的一些复选框并导航到第二页并在第二页中检查另一页时,我在第一页中检查的选项不会保留在那里.在分页期间保留复选框值是否可行?
Gridview的代码是
$widget = $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $model->search(),
'cssFile' => Yii::app()->baseUrl . '/media/js/admin/css/admingridview.css',
//'filter' => $model,
'ajaxUpdate' => true,
'enablePagination' => true,
'columns' => array(
array(
'name' => 'id',
'header' => '#',
'value' => '$this->grid->dataProvider->pagination->currentPage * $this->grid->dataProvider->pagination->pageSize + ($row+1)',
),
array(
'class' => 'CCheckBoxColumn',
'selectableRows' => '2',
'header' => 'Selected',
),
array(
'name' => 'fb_user_id',
'header' => 'FaceBook Id',
'value' => 'CHtml::encode($data->fb_user_id)',
),
array(
'name' => 'first_name',
'header' => 'Name',
'value' => 'CHtml::encode($data->first_name)',
),
array(
'name' => 'email_id',
'header' …Run Code Online (Sandbox Code Playgroud) 有些好友请建议如何禁用cgridview小部件上的查看按钮以及如何添加更多按钮,如活动..
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'customer-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'first_name',
'last_name',
'club.club_name',
array(
'class' => 'CButtonColumn',
'updateButtonUrl' =>'Yii::app()->createUrl("/customer/editmember1",array("id" => $data->primaryKey))',
'updateButtonImageUrl'=>Yii::app()->request->baseUrl.'/images/edit.jpg',
'deleteButtonUrl' =>'Yii::app()->createUrl("/customer/delete",array("id" => $data->primaryKey))',
'deleteButtonImageUrl'=>Yii::app()->request->baseUrl.'/images/delete.jpg',
'viewButton' => array('visiable' => false),
),
),
));
Run Code Online (Sandbox Code Playgroud) 我想显示404错误页面,因为我在protected/view/system文件夹中创建了error404.php文件.
默认情况下,我有Sitecontroller,它包含错误动作功能,如下所示
public function actionError()
{
if($error=Yii::app()->errorHandler->error)
{
if(Yii::app()->request->isAjaxRequest)
echo $error['message'];
else
$this->render('error', $error);
}
}
Run Code Online (Sandbox Code Playgroud)
在主配置文件中,它被定义为
'errorHandler'=>array(
// use 'site/error' action to display errors
'errorAction'=>'site/error',
),
Run Code Online (Sandbox Code Playgroud)
我的问题是我只需要自定义404页面,其余的错误我需要处理它由sitecontroller的错误函数处理的方式.但我找不到办法做到这一点.如果我想删除'errorAction'=>'site/error',那么它会通过调用显示404错误
throw new CHttpException(404, 'Page not found');
Run Code Online (Sandbox Code Playgroud)
但这样做我只能看到没有布局的页面,其他自定义错误被视为404,而不是.我多次阅读手册,但我仍然无法解决它.
我使用CMenu小部件创建了一个类似Twitter Bootstrap导航栏的菜单:
<?php
$this->widget( 'zii.widgets.CMenu', array(
'items' => array(
array(
'label' => 'Home',
'url' => array( '/site/index' ),
),
array(
'label' => 'Dropdown <b class="caret"></b>',
'url' => '#',
'submenuOptions' => array( 'class' => 'dropdown-menu' ),
'items' => array(
array(
'label' => 'Submenu Item 1',
'url' => array( '/user/create' ),
),
array(
'label' => 'Submenu Item 1',
'url' => array( '/user/list' ),
),
),
'itemOptions' => array( 'class' => 'dropdown' ),
'linkOptions' => array( 'class' => 'dropdown-toggle', 'data-toggle' => 'dropdown' ), …Run Code Online (Sandbox Code Playgroud) 请告诉我,如何在Yii2中仅显示ActiveField的字段标签和错误?我正在使用Redactor,我不仅要显示textarea,还要显示错误和标签.谢谢.
代码示例如下.
<?php $form = ActiveForm::begin(); ?>
<?php echo $form->errorSummary($model); ?>
<?= $form->field($model, 'title')->textInput(['maxlength' => 255]) ?>
<?php
echo yii\imperavi\Widget::widget(
[
'model' => $model,
'attribute' => 'text',
'options' => [],
]
);
?>
<br />
<div class="form-group">
<?= Html::submitButton(
$model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'),
['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']
) ?>
</div>
<?php ActiveForm::end(); ?>
Run Code Online (Sandbox Code Playgroud) 我正在将在Yii1中开发的旧应用程序迁移到Yii2.
我以前在控制器中有一个数组,它存储了我需要作为JavaScript发送到前端的所有变量:
public $jsVars;
public function toJSObject($params){
$this->jsVars = array_merge($this->jsVars, $params);
}
private function printJSVarsObject(){
//convert my php array into a js json object
}
Run Code Online (Sandbox Code Playgroud)
当我需要在Javascript中公开变量时,我只想在View或Controller中使用$ this-> toJSObject.
然后,在控制器中我也曾经有过:
public function beforeRender($view){
$this->printJSVarsObject();
}
Run Code Online (Sandbox Code Playgroud)
在Yii2中,我必须使用自定义视图配置View组件,然后附加事件:
namespace app\classes;
use yii\base\Event;
use yii\helpers\Json;
Event::on(\yii\web\View::className(), \yii\web\View::EVENT_END_BODY, function($event) {
$event->sender->registerJSVars();
});
class View extends \yii\web\View {
public $jsVars = [];
public function addJsParam($param){
$this->jsVars = array_merge($this->jsVars, $param);
}
public function registerJSVars() {
$this->registerJs(
"var AppOptions= " . Json::htmlEncode($this->jsVars) . ";",
View::POS_END,
'acn_options'
);
} …Run Code Online (Sandbox Code Playgroud) yii ×10
php ×8
yii2 ×3
ajax ×1
cgridview ×1
cmenu ×1
coding-style ×1
gridview ×1
html ×1
many-to-many ×1
pagination ×1
rbac ×1
visible ×1