小编Wad*_*ade的帖子

Yii2 htaccess - 如何隐藏前端/ web和后端/ web完全

我觉得我很亲密.我有htaccess重定向到网站(前端/ web)和/admin路径(backend/web).该网站显示正常,CSS文件加载等.

如果你去:http:// localhost/yii2app / - 它加载主页,并没有在地址栏中重定向,但页面显示所有URL中的前端/ web.

如果你去:http:// localhost/yii2app/admin - 它加载后端登录页面,但它会立即重定向到地址栏中的/ backend/web/site/login(丑陋).

问题:frontend/backend路径显示在URL(地址栏和页面上的链接)中.

我需要的是:我希望整个网站在不显示前端/后端链接的情况下运行.项目的根应该从(不可见)拉出frontend/web而不显示它.所以http:// localhost/yii2app /运行我的整个前端,http:// localhost/yii2app/admin /运行我的整个后端.

为什么?我觉得这个设置在服务器上运行时会非常稳固和优雅.我希望能够将我的项目文件夹直播到一个站点,它工作得很好,而不必有黑客来处理本地vs服务器.

.htaccess文件在/yii2app目录中:

Options -Indexes
RewriteEngine on

<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/
    RewriteCond %{REQUEST_URI} admin
    RewriteRule .* backend/web/index.php [L]

    RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/
    RewriteCond %{REQUEST_URI} !admin
    RewriteRule .* frontend/web/index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

现在在前端和后端Web目录中,它们都具有相同的.htaccess:

RewriteEngine on

# if a directory or a file exists, use the …
Run Code Online (Sandbox Code Playgroud)

php apache .htaccess mod-rewrite yii2

30
推荐指数
2
解决办法
4万
查看次数

在Heroku上设置Yii2 Advanced

我需要一些帮助在Heroku上设置Yii2高级应用程序.我已经使用Composer在本地安装了Yii,完全遵循他们的指南:http://www.yiiframework.com/doc-2.0/guide-tutorial-advanced-app.html

我的网站在本地工作,有前端和后端:

http://localhost/yii2app/frontend/web/
http://localhost/yii2app/backend/web/
Run Code Online (Sandbox Code Playgroud)

当我推送它并在Heroku上运行时,我收到错误抱怨找不到某些文件.有什么奇怪的,使用我的Heroku应用程序的bash终端,我可以验证文件实际上在那里!Heroku不喜欢'../../'更改目录吗?

PHP Fatal error:  require(): Failed opening required '/app/frontend/web/../../common/config/main-local.php'  
include_path='.:/app/.heroku/php/lib/php') in /app/frontend/web/index.php on line 12
Run Code Online (Sandbox Code Playgroud)

在'frontend/web/index.php'中是Yii的股票代码(第12行是main-local.php):

$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../../common/config/main.php'),
require(__DIR__ . '/../../common/config/main-local.php'),
require(__DIR__ . '/../config/main.php'),
require(__DIR__ . '/../config/main-local.php')
);
Run Code Online (Sandbox Code Playgroud)

如果它与'../../'改变目录有关,那么我认为第一个要求会有错误(对于main.php条目).

为了让Herii上的Yii2高级运行,我错过了什么?

更新 - 我创建了一个新的Yii2基本应用程序.应该工作和简单,所以我想.显然,甚至基本的应用程序也不能在Heroku上运行.必须在文档中遗漏某些东西......使用作曲家来安装Yii2 basic,将它放在git下,将其推送到新的heroku堆栈.去看看我的应用程序在heroku上,将/web/index.php添加到网址的末尾.

ReflectionException
Class yii\debug\Module does not exist
Run Code Online (Sandbox Code Playgroud)

然后我将index.php放在包含phpinfo()的根目录中.我可以确认我收到了phpinfo报告.所以php正在运行,它报告PHP 5.6.5.

看起来像Yii2和Heroku在没有一些神奇(并且没有记录)的技巧的情况下表现不佳.我搜索,搜索和搜索,我找不到任何关于此的内容.我不可能是唯一一个试图将Yii应用程序放到Heroku上的人.

所以我尝试了CloudControl.我将我的股票Yii2基本应用程序部署到cloudcontrol,我再次获得了根index.php的phpinfo报告.导航到/web/index.php并获取错误:

Invalid Parameter – yii\base\InvalidParamException
The file or directory to be published does not exist: /srv/www/code/vendor/bower/jquery/dist
Run Code Online (Sandbox Code Playgroud)

是什么赋予了!我可以在本地运行这个很好.当我将它推送到基于云的主机(Heroku或CloudControl)时,它会失败!我认为yiibasic应用程序会更好,至少让它运行PoC,但Yii开箱即用,不会运行这两种服务.还有一些我没想到的东西.

php heroku yii2

10
推荐指数
1
解决办法
4143
查看次数

Yii2 Advanced - 扩展视图以添加自定义变量

我不确定我要用的是最好的Yii解决方案来处理这个问题.所以我愿意接受更好的解决方案.无论最简单的Yii方式是什么.

我有一个左侧边栏,只需要向登录的用户显示.这不是问题,我知道如何通过选中'Yii :: $ app-> user-> isGuest'来显示内容.

在特定页面上,我不想要这个侧边栏,即使他们已登录.例如,"联系我们"页面不需要左侧边栏.我真的不在乎它是否有侧边栏,但它正在抛弃Bootstrap3列.

<div class="row">
    <div class="col-lg-4 center-col">

        <div class="site-contact">
            <h1><?= Html::encode($this->title) ?></h1>

            <p>
                If you have business inquiries or other questions, please fill out the following form to contact us. Thank you.
            </p>

            <div class="row">
                <div class="col-lg-12">
                    [contact form code truncated]
                </div>
            </div>
        </div>

    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

它看起来很棒,位于页面中间,4个宽.

但是,在我的Yii main.php(frontend/views/layouts/main.php)中,我有2个单独的布局,具体取决于用户是否已登录.

<div class="container-fluid mainpage">

    <?= Alert::widget() ?>

    <div class="row">

        <?php if (!Yii::$app->user->isGuest) { ?>

            <div class="col-md-3 sidebar">
                <?= Menu::widget([
                    'options' => ['class' => 'nav nav-sidebar'],
                    'items' …
Run Code Online (Sandbox Code Playgroud)

twitter-bootstrap yii2 twitter-bootstrap-3 yii2-advanced-app

6
推荐指数
1
解决办法
1919
查看次数

Yii2 - 如何从Yii :: $ app-> user获取当前用户名或名称?

你如何使用变量添加或获取变量Yii::$app->user->something

我不想让他们通过identity.我想通过特定的方式进行访问user.

例如,我想获取当前登录用户的用户名和名称:

\Yii::$app->user->username
Run Code Online (Sandbox Code Playgroud)

要么

\Yii::$app->user->name
Run Code Online (Sandbox Code Playgroud)

php yii yii2 yii2-user

3
推荐指数
1
解决办法
2万
查看次数

Yii2 - JSONP响应不返回任何内容(空白)但不起作用,但JSON确实如此

我正在使用Yii2,为了它的价值,我知道基础知识,并且已经编程了一段时间.这可能是因为该领域缺乏文档(Yii2 JSONP和Responses).我找到的只是返回JSON响应的示例,没有显示JSONP响应.

我从这里开始,Yii Cookbook:https: //github.com/samdark/yii2-cookbook/blob/master/book/response-formats.md

它仅显示JSON和XML的示例,但不显示JSONP.它声明使用FORMAT_JSONP.所以我用JSONP交换了JSON示例.没有,只是一个空白的白页.所以我var_dump()数据,是的数据就在那里!

因此,搜索谷歌搜索"yii2 jsonp","yii2 jsonp错误","yii2 jsonp无法正常工作",以及其他一些变化,我什么也没找到.我在这里搜索了SO,只有2个问题出现了"yii2 jsonp",都没有任何帮助.

我继续学习Yii2文档.这里:http://www.yiiframework.com/doc-2.0/guide-runtime-responses.html 同样,没有JSONP的例子,除了FORMAT_JSONP有效的格式类型之外没有太多谈论它...

我可以很好地使用JSON,但是我试图使用JSONP响应中的数据填充Google Map,因此我需要JSONP.

这是我的控制器:

public function actionMapapi()
{
    \Yii::$app->response->format = \yii\web\Response::FORMAT_JSONP;
    $data = User::find()->all();

    return $data;
}
Run Code Online (Sandbox Code Playgroud)

当我转到URL时,它只是白色.我可以在声明response->格式之前放置一个骰子('here'),并在页面上打印"here".所以控制器正在被访问就好了.如果我换FORMAT_JSONPFORMAT_JSON它完美的作品,它只是不JSONP.

似乎在如何在Yii2文档中准确处理JSONP方面存在差距,而在线讨论它并不多(我可能会发现).

php json jsonp yii yii2

2
推荐指数
1
解决办法
2051
查看次数