我觉得奇怪的是,关于将Yii2应用程序部署到共享主机服务器的注意事项很少(如果有的话)的细节。
有人对此有一些步骤,技巧和注意事项吗?
您是否遵循某个流程将问题/错误降低到最低限度?
数据库如何迁移(随数据一起迁移)?我假设我可以导出/导入数据库,直接复制Yii应用程序文件夹,但这似乎太简单了吗?
我在Yii2中使用Codeception进行验收测试,并且无法访问我的模型,因为名称空间不适用于这些测试.
我在我的tests/_bootstrap.php中有这个
require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
$config = require(__DIR__ . '/../console/config/main.php');
//
$application = new yii\console\Application( $config );
## Added (@vitalik_74)
Yii::setAlias('@tests', dirname(__DIR__));
Run Code Online (Sandbox Code Playgroud)
这在我的console/config/main中
<?php
$params = array_merge(
require(__DIR__ . '/params.php'),
require(__DIR__ . '/params-local.php')
);
return [
'id' => 'app-console',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'controllerNamespace' => 'console\controllers',
'components' => [
'log' => [
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
],
'params' => $params,
];
<?php
return [
'adminEmail' …Run Code Online (Sandbox Code Playgroud) 我试图得到(StatusCode)响应REST api,而它只返回字段名称和错误消息,如下所示
[{"field":"Email","message":"Email \"ali@ali.ali\" has already been taken."}]
Run Code Online (Sandbox Code Playgroud)
我添加了回复
'response' => [
'class' => 'yii\web\Response',
'on beforeSend' => function ($event) {
$response = $event->sender;
if ($response->data !== null && Yii::$app->request->get('suppress_response_code')) {
$response->data = [
'success' => $response->isSuccessful,
'data' => $response->data,
];
$response->statusCode = 200;
}
},
],
Run Code Online (Sandbox Code Playgroud) 这是我的网格视图,我从类更改actionColumn为:
[ 'format' => 'html',
'contentOptions'=>['style'=>'width: 5px;'],
'value' => function($model) {
if($model->id == Yii::$app->user->identity->id) {
return Html::a('<i class="glyphicon glyphicon-share-alt"></i>').' '.
Html::a('<i class="glyphicon glyphicon-pencil"></i>', ['update', 'id' => $model->id]).' '.
Html::a('<i class="glyphicon glyphicon-trash"></i>', ['delete', 'id' => $model->id], ['data' => ['confirm' => 'Do you really want to delete this element?','method' => 'post']]);
}
return '';
},
],
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误。
Method Not Allowed (#405)
Method Not Allowed. This url can only handle the following request methods: POST.
Run Code Online (Sandbox Code Playgroud)
当我actionColumn再次更改它时,它可以正常工作,但是我更改了代码,这只是给我一个错误。
我可以在Yii2模型页面(http://www.yiiframework.com/doc-2.0/yii-base-model.html)中看到,在"字段"部分中,您可以根据某些字段设置"不同的字段列表"上下文信息.例如,根据$ scenario或当前应用程序用户的权限,您可以返回不同的可见字段集或过滤掉某些字段."
但是,场景文档(http://www.yiiframework.com/doc-2.0/guide-structure-models.html#scenarios)表示场景用于为模型属性验证创建不同的上下文.
我正在使用Yii2 Restful API,我必须使用默认操作(actionIndex,actionView,...)从模型中获取数据并显示为API结果.我知道我可以覆盖那些方法(http://www.yiiframework.com/doc-2.0/guide-rest-controllers.html#extending-active-controller),但我怎么能说在那些方法中使用不同的方法字段(取决于不同的场景)?
我需要的是为actionIndex(项目列表)输出field1,field2,field3,但我想为actionView(项目列表)输出field1,field2,field3,field4.
在我使用Yii::$app->user->isGuest它的控制台应用程序中给出以下异常:
Exception 'yii\base\UnknownPropertyException' with message 'Getting unknown prop
erty: yii\console\Application::user'
Run Code Online (Sandbox Code Playgroud)
我甚至尝试在配置文件中添加组件数组中的用户.但它没有奏效.知道我做错了什么吗?
我正在使用YII2作为我的项目,我使用composer创建了一个项目(高级模板),现在我需要启动另一个项目,首先我有更新composer(composer self-update),这很好.现在我正在尝试使用composer在我的lampp上完成YII2高级模板的安装过程,在配置Composer得到以下错误的步骤中,
[ErrorException]
touch():Utime失败:权限被拒绝
有人可以帮助我,为什么在第二次安装时会出现问题?
谢谢
我正在研究yii2框架.使用listview wiget时遇到麻烦.当我点击下一页时,我想更新页面但不重新加载.但我不知道怎么办?点击下一页时这是网址:
http://......&page=1&per-page=5
Run Code Online (Sandbox Code Playgroud)
请帮我?
非常感谢.
我使用kartik - yii2-widget-select2允许选项在表单创建时选择多个选项.
我想根据select2小部件中选择的选项数量向数据库输入两行或更多行.
表单中的select2小部件如下所示.
<?= $form->field($model, 'Assign_task_to')->widget(Select2::classname(),
//$data = ArrayHelper::map(Employee::find()->all(),'Employee_ID','employee_name'),
[
'data' => ArrayHelper::map(Employee::find()->all(),'Employee_ID','employee_name'),
'language' => 'en',
'options' => ['placeholder' => 'Select an employee ...', 'multiple' => true],
'pluginOptions' => [
'allowClear' => true
],
]); ?>
Run Code Online (Sandbox Code Playgroud)
控制器actionCreate在下面.
public function actionCreate()
{
// set default values
$empModel = new Tasksemp();
$model = new Tasks();
$model->priotiy_level = 'medium';
$model->start_date = date('Y-m-d'); //to get default date
if ($model->load(Yii::$app->request->post())) {
//Check if field input is empty
$model->file = UploadedFile::getInstance($model, 'upload_documents');
if($model->file)
{ …Run Code Online (Sandbox Code Playgroud) 我想从特殊字符验证我的名字文本框
我试试这个: -
public function rules()
{
[
'full_name', 'match',
'pattern' => '/^[a-zA-Z\s]+$/',
'full_name' => 'full_name can only contain word characters'
]
}
Run Code Online (Sandbox Code Playgroud) yii2 ×10
php ×2
yii ×2
codeception ×1
composer-php ×1
database ×1
jquery ×1
lampp ×1
namespaces ×1
psr-4 ×1
rest ×1
select2 ×1
yii2-model ×1