嗨,我在前端保存图片,并在前端显示为true,我用很多方式测试后端查看但不能正常工作。 请帮帮我
我的控制器在后端
Yii::$app->params['uploadPath'] = Yii::getAlias('@frontend') .'/web/uploads/';
$path = Yii::$app->params['uploadPath'] . $model->image_web_filename;
$image->saveAs($path);
url我的后端和前端是分开的
backend:yii.com/:81
frontend:yii.com
我测试了这些解决方案,但没有成功:
https://stackoverflow.com/questions/23155428/how-to-get-root-directory-in-yii2
我在backend \ config中的别名文件中插入了两个别名:
Yii::setAlias('@frontend', 'http://frontend.sample.dev');
Yii::setAlias('@backend', 'http://backend.sample.dev');
并在backend / web / index.php
中使用它require(__DIR__ . '/../config/aliases.php');
但是我收到了这个错误:
An Error occurred while handling another error:
exception 'yii\base\InvalidRouteException' with message 'Unable to resolve the request "site/error".' in
/var/www/blog/vendor/yiisoft/yii2/base/Module.php:532
Stack trace:
#0 /var/www/blog/vendor/yiisoft/yii2/web/ErrorHandler.php(95):
yii\base\Module->runAction('site/error')
#1 /var/www/blog/vendor/yiisoft/yii2/base/ErrorHandler.php(111):
yii\web\ErrorHandler->renderException(Object(yii\web\NotFoundHttpException))
#2 [internal function]: yii\base\ErrorHandler-
>handleException(Object(yii\web\NotFoundHttpException))
#3 {main}
Previous exception:
exception 'yii\base\InvalidRouteException' with message 'Unable to resolve the request "post/index".' in
/var/www/blog/vendor/yiisoft/yii2/base/Module.php:532
Stack trace:
#0 /var/www/blog/vendor/yiisoft/yii2/web/Application.php(102):
yii\base\Module->runAction('post/index', Array)
#1 /var/www/blog/vendor/yiisoft/yii2/base/Application.php(380):
yii\web\Application->handleRequest(Object(yii\web\Request))
#2 /var/www/blog/backend/web/index.php(18): yii\base\Application->run()
#3 {main}
Next exception 'yii\web\NotFoundHttpException' with message 'Page not
found.' in /var/www/blog/vendor/yiisoft/yii2/web/Application.php:114
Stack trace:
#0 /var/www/blog/vendor/yiisoft/yii2/base/Application.php(380):
yii\web\Application->handleRequest(Object(yii\web\Request))
#1 /var/www/blog/backend/web/index.php(18): yii\base\Application->run()
#2 {main}
答案 0 :(得分:1)
你可以尝试这个解决方案:
Yii::setAlias('@frontend', 'http://frontend.sample.dev');
Yii::setAlias('@backend', 'http://backend.sample.dev');
如果您在后端上传文件,请将图片的src
参数设置为
Yii::getAlias('@backend/path/to/your/image/file');
如果您将文件保存在前端,请将@backend
替换为@frontend
答案 1 :(得分:1)
我参加聚会很晚了 但我有一些骨头可以选择this solution provided ..所以在这里:
你提到你有不同的前后配置
因此,您分别为yii.com/:80
和yii.com/:81
/frontend/web
和/backend/web
提供不同的文件夹。
记住这一点,
任何数量的别名都不能使其中一个的内容可供另一个使用。
yii-advanced-app在common/config/bootstrap
中定义了@frontend
和@backend
个别名
Yii::setAlias('@common', dirname(__DIR__));
Yii::setAlias('@frontend', dirname(dirname(__DIR__)) . '/frontend');
Yii::setAlias('@backend', dirname(dirname(__DIR__)) . '/backend');
Yii::setAlias('@console', dirname(dirname(__DIR__)) . '/console');
请勿更改这些,除非您非常清楚自己在做什么 Yii正在使用这些别名来自动加载在这些命名空间common,frontend,backend和console下定义的类。这个确切的事情导致了“处理其他错误时发生错误”的荒谬链条 有关Yii autloading documentaion
您可以通过创建从frontend/web/uploads
到backend/web/uploads
的符号链接来简单地共享这些文件夹的内容。
您的网络服务器配置(或.htaccess)将需要+FollowSymLinks
选项
如果您向environments/index.php
文件添加几行
'Development' => [
// .. other options
'setWritable' => [
// .. leave the default stuff there
'frontend/web/uploads',
],
'createSymlink' => [
// link => real folder
'backend/web/uploads' => 'frontend/web/uploads',
]
],
'Production' => [
// ..
'setWritable' => [
// ..
'frontend/web/uploads',
],
'createSymlink' => [
// link => real folder
'backend/web/uploads' => 'frontend/web/uploads',
]
],
然后再次运行init命令,就像在安装指南中一样(您必须选择不覆盖本地配置文件)
如果您在Windows下运行,现在可能会要求您提升权限
php init
或者如果您选择手动制作符号链接,则可以尝试此quick guide
答案 2 :(得分:-1)
在组件文件夹
中创建此功能 namespace common\components;
use Yii;
class Helper extends \yii\web\Request {
public static function getFrontendUrl($path) {
$frontUrl = str_replace('/adminpanel', '', $path);
return $frontUrl;
}
}
并在后端使用:
$ path \ common \ components \ Helper :: getFrontendUrl(Yii :: $ app-> request-> baseUrl)。$ img;
notic:在前端你不需要