我正在使用 Yii2 advance 模板,我可以在本地计算机上成功访问 gii 工具。但是当我将其上传到真实服务器时,出现一条消息“您不允许访问此页面”。您能告诉我应该配置哪个文件吗?您可以打印屏幕或粘贴该配置文件的全部内容吗?
先谢谢你了。
公共函数actionDelete($id)
{
$model=$this->findModel($id);
unlink($_SERVER["DOCUMENT_ROOT"]."/../../uploads/".$model->image);
Run Code Online (Sandbox Code Playgroud)
或者
unlink(dirname(__FILE__).'/../../uploads/'.$model->image);
$this->findModel($id)->delete();
return $this->redirect(['index']);
}
Run Code Online (Sandbox Code Playgroud) 我以这种方式合并我的配置:
$config = \yii\helpers\ArrayHelper::merge(
(require (__DIR__ . '/../config/web.php')),
(require __DIR__ . '/../config/overrides/web.php')
);
Run Code Online (Sandbox Code Playgroud)
这是config/web.php
$config = [
'components' => [
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
[
'class' => 'yii\log\EmailTarget',
'levels' => ['info'],
'categories' => ['parsingFailure'],
'logVars' => [],
'message' => [
'from' => ['system@host.com'],
'to' => ['support@host.com'],
'subject' => 'Message parsing failure',
],
],
],
],
//....some more components
]
];
Run Code Online (Sandbox Code Playgroud)
这是我尝试应用的覆盖 …
创建了一个带有名为“until”的日期时间字段的模型,名称并不重要,只是它是日期时间。这是模型规则中的验证。
['until', 'datetime', 'format' => 'Y-m-d H:i:s'],
Run Code Online (Sandbox Code Playgroud)
后来,在实例化模型并更新字段后,我收到验证错误。
$model->until = '2017-10-15 14:30:04';
$eventRepeat->validate();
$errors = $model->errors;
Run Code Online (Sandbox Code Playgroud)
$errors['until'][0] 将显示“Until 的格式无效。”
我没想到会出现这个错误。
以下代码将抛出异常
数组到字符串的转换
我的目的是在另一个选项卡中加载具有特殊参数的外部网站。应该如何正确编码?请注意,重定向不应呈现内部控制器方法!
$paramValue = "12";
return $this->redirect("http://example.com?param=$paramValue", ['target' => '_blank']);
Run Code Online (Sandbox Code Playgroud)
我所实现的一切 - 没有错误 - 就是创建链接,但这不一样。所以,别无选择!
<center>
<?php echo Html::a(
'StepStone laden',
$url,
[
'class' => 'btn btn-success
btn-block',
'target' => '_blank',
'title' => 'Load StepStone',
'data' => ['pjax' => '0']
]
);
?>
</center>
Run Code Online (Sandbox Code Playgroud)
这是我的解决方案,因为它实际上存在:
/* It's not possible to render external URL in aonther tab using php. So, following order will render external URL in same tab:
return $this->redirect($url); */
private function RenderBoerse($name, $DynamicModel) { …Run Code Online (Sandbox Code Playgroud) 我有一个项目,他们有 3 个状态。现在我需要统计每天每种状态的数量和总数。
我可以单独列出它们。但不知道如何将它们结合起来。
这是我的代码:
$passed_counts = (new \yii\db\Query())
->select(['date', 'week', 'count(sku) as sku'])
->from('qa3d')
->where(['status' => 'Passed'])
->groupBy('date')->all();
$failed_counts = (new \yii\db\Query())
->select(['date', 'week', 'count(sku) as sku'])
->from('qa3d')
->where(['status' => 'Failed'])
->groupBy('date')->all();
$onhold_counts = (new \yii\db\Query())
->select(['date', 'week', 'count(sku) as sku'])
->from('qa3d')
->where(['status' => 'On Hold'])
->groupBy('date')->all();
$total_counts = (new \yii\db\Query())
->select(['date', 'week', 'count(sku) as sku'])
->from('qa3d')
->groupBy('date')->all();
Run Code Online (Sandbox Code Playgroud)
现在我可以将它们分别列在 4 个表中。我想像这样将它们组合在一张表中,但不知道如何。
date Passed Failed On Hold Total
2019-01-16 1 4 2 7
2019-01-17 1 0 2 3
请在这件事上给予我帮助。
谢谢。
我在 Yii2 应用程序中设置了时区,如 config/web.php 中的文档所述:
'timeZone' => 'Europe/Berlin',
Run Code Online (Sandbox Code Playgroud)
但是:这仅对 Yii2 有效,显然不适用于 PHP 函数,例如date(). PHP 时区设置保持不变,因此 PHP 和 Yii2 之间存在差异。
如何使 Yii2 时区成为根据 Yii2 配置中的时区设置设置 PHP 时区的领先时区?
编辑
时区是在应用程序组件中设置的\Yii::$app,而不是在格式化程序组件中设置的。
我无法修改php.ini文件。
我正在使用高级项目应用程序,并尝试在 Yii2 中添加 URL 规则来处理带有破折号的自定义 URL。
我想要做的是将 URL 更改为
到
我有以下配置,当 URL 参数没有破折号时(exampleposttitle),该配置可以正常工作。
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
// ...
'<url:\w+>' => 'post/details',
],
],
Run Code Online (Sandbox Code Playgroud) 我有一个任务,描述为“使用 Yii2 迁移创建新数据库,并默认使用它”。但我有一些勾结:我必须在我的main-local.php文件中设置至少一个默认数据库才能开始迁移。但我也必须通过初始迁移创建这个数据库。
return [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=default_base',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],
];
Run Code Online (Sandbox Code Playgroud)
我该如何处理?创建一个带有迁移的数据库并设置为默认数据库。
当我执行迁移时(迁移文件中有代码):
public function safeUp()
{
$this->execute("CREATE DATABASE default_base");
}
Run Code Online (Sandbox Code Playgroud)
我有一个例外:
General error: 1007 Can't create database 'default_base'; database exists
Run Code Online (Sandbox Code Playgroud)
我意识到这是因为我已经在 phpmyadmin 中创建了 default_base(单击按钮“创建数据库”),并将其与我的main-local.php文件中的应用程序连接。但是我只需要在执行yii migrate.
UPD
我已经尝试了 rob006 推荐的方式,但出现连接错误
Exception 'yii\db\Exception' with message 'SQLSTATE[HY000] [1049] Unknown database 'default_base''
Run Code Online (Sandbox Code Playgroud)
我的 main-local.php 看起来就像 rob006 推荐的那样,但我仍然无法迁移。仅当我设置时才有效:
'preinstallDb' => [
'class' => 'yii\db\Connection', …Run Code Online (Sandbox Code Playgroud) 谁能告诉我为什么我$model->load(Yii::$app->request->post()返回布尔值 (false) ?我尝试 var_dump $model->load(Yii::$app->request->post(),它肯定有我的输入值(不为空)。
这是我的代码。我正在处理基于Vitalet's x-editable. 该字段将修改tema数据库列的值(tema的模型属性)。我尝试print_r($model->getErrors())在'else'语句中,我得到了
Array
(
)
public function actionFetch(){
//There's only a single row in the table.
$model= Home::find()->one();
if (Yii::$app->request->isAjax) {
// use Yii's response format to encode output as JSON
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
// save posted model attributes
if ($model->load(Yii::$app->request->post()) && $model->save()) {
//extract the class name
$modelClassName = \yii\helpers\StringHelper::basename(get_class($model));
//grab the post parameters array (as attribute=>value)
$params = Yii::$app->request->post($modelClassName);
//pull the …Run Code Online (Sandbox Code Playgroud)