1

ユーザーがサインアップする前に Web アプリを試すためのデモ サイトをセットアップする必要があります。デモは製品コードに基づいていますが、マイナー コードの変更が必要です: デモ データベースへの接続、各ユーザーの新しいゲスト アカウントの自動作成/ログインなど。

明らかな解決策は、私のコード ベースを 2 つ目のデモ Web サイトとして複製し、必要に応じて編集することです。Subversion にブランチを追加するだけで、デモ コードと製品コードの同期を維持するのは簡単です。ただし、コードを開発から実稼働にプッシュするたびに、サーバーで 2 つの更新 (実稼働とその後のデモ) を行わなければならないことを考えると、あまりワクワクしません。

最初は、モジュールを介して Web サイトを複製できるのではないかと考えていました。ただし、これが可能かどうかは不明です。

Yii には、変更されたバージョンの Web サイト (構成ファイルと選択されたコントローラー) を実行するメカニズムはありますか?

4

3 に答える 3

4

今までやったことがないので、ただのアイデアです

他のディレクトリにファイルがほとんどないソリューション

別のデモ ディレクトリを作成し、デモ URL にマップします。

このディレクトリにこのindex.phpを入れます(.htaccessもあるかもしれません)

<?php
$yii=_PRODUCTION_PATH_.'/framework/yii.php';
$config_prod=_PRODUCTION_PATH_.'/protected/config/main.php';
$config_demo=dirname(__FILE__).'/demo_main.php';

require_once($yii);

$config = CMap::mergeArray($config_prod,$config_demo);

Yii::createWebApplication($config)->run();

demo_main.php はクラス (user、db) をオーバーライドして、より良いデモ エクスペリエンスを管理します。

<?php
return array(
        'basePath'=>_PRODUCTION_DIR_.DIRECTORY_SEPARATOR.'..',
        'components'=>array(
             'user' => array(
                  // here you override the user class with a DEMO only user
                  'class'=>'DemoUser',
             )
        ),

生産サイトのすべてのファイルが別のディレクトリにあるソリューション

ここでは、ルート ディレクトリの index.php に従います。

<?php

$yii='../framework/yii.php';

$configMain = include dirname(__FILE__).'/protected/config/main.php';
$configProd = include dirname(__FILE__).'/protected/config/production.php';
$configDemo = include dirname(__FILE__) . '/protected/config/demo.php';

require_once($yii);
// for the demo version
// instead of the comment can be an *if* or any solution to manage 2 configs
//$config = CMap::mergeArray($configMain,$configProd);
$config = CMap::mergeArray($configMain,$configDemo);

Yii::createWebApplication($config)->run();

demo.phpは、「demo_main.php」に類似しており、サイトのデモ バージョンのクラスと構成をオーバーライドします。

于 2012-11-30T07:53:51.813 に答える
2

testdriveデモアプリはこのために構成されています-インストール後、別の、、index-test.phpおよびに注意してくださいprotected/config/test.php

@IvanButtinoniの提案とは異なり、へのアクセスを許可するためにクリーンURLを使用している場合index-test.phpは、の代わりににアクセスindex.phpする必要があるため、.htaccessを変更する必要がある場合がありますindex-test.php

これを行うとき、私は通常、ベースcontroller.phpにカスタムinitを記述します。

    public function init() {
            // use test layout if using test config
            if (isset(Yii::app()->params['test'])) {
                    $this->layout='//layouts/test';
            }
            parent::init();
    }

明らかに、test.phpにテストパラメーターがあります。。。

私の2つのレイアウトの唯一の違いは、背景色を明るい黄色に設定していることです。これにより、テストサイトにいることが非常に明確になります。

于 2012-11-30T17:00:48.357 に答える
1

(元の投稿へのコメントの回答によると)よく理解していれば、いくつかの方法があります。これは、大いに役立つと思われるリンクです。それは私がセットアップするのを助けました、そしてあなたを助けるかもしれません! Yii 2 では、本質的にサポートされます

http://www.yiiframework.com/wiki/33/

于 2012-11-30T19:10:54.163 に答える