問題タブ [yiic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1807 参照

php - Yii コマンド ライン - Web アプリ全体を初期化し、yic を介して他のコントローラー アクションを呼び出す方法は?

更新 - 次のように application.controllers.* を config/console.php に追加することで、これを解決できました。

次に、次のように cli コマンドでアクションを呼び出します。

コマンドラインから実行できる protected/commands/dBManagerCommand.php に単純な yiic コマンドがあります。

実行すると、次のエラーが発生します。どうやら他のコントローラーが見つからないようです。アプリケーションの残りの部分で、既存のコントローラーからメソッドを実行したいと考えています。これは bash シェルから実行されます (コードの色は無視されます)。

それでは、これらのコントローラーメソッドをどのようにロードできますか? これらのコントローラーファイルを手動で含めようとせずに、アプリ全体を初期化する適切な方法があると確信しています。

みんな、ありがとう!


以下の MVC アーキテクチャの誤用に関する批判に応えて、コメント フィールドが十分に長くないため、この応答をここに貼り付けます。

まず、Web インターフェイス用のすべてのコントローラーをプリロードするわけではありませんが、この目的のために問題を解決し、正常に動作します。import メソッドは、最初はコントローラーを介してリクエストを受け取りますが、その後、db およびファイル システム レベルのロジックと操作に適したモデル メソッドを呼び出します。(そして、主に Yii の動作関連のメモリ リークのため、この目的専用のインポート モデル クラスが他にもあります)。

コントローラーでロジックを実行してはならないという考えは、まったく間違っています。この場合、入力フィルタリング ロジックを実行するコントローラーでインポート メソッドを作成することにしました。これは、ユーザー (人間または cron) が送信する必要がある多数の入力があり、これは、ファイルをデータベースに解析するタスク。このコントローラーのインポート メソッドは、ユーザー入力に基づいてファイルを解析し、事前にフィルター処理されたデータをモデル メソッドに渡します。ファイル入力データは実際には信頼できないユーザー入力であり、ユーザー要求パラメーターに基づいて前処理を行う必要があったため、これを選択しました。はい、モデルメソッドでこれを行うことができますが、モデルでリクエストデータを処理するか、大量の引数とデータを渡すことになり、面倒でメモリ使用量が増加します。

0 投票する
3 に答える
121 参照

csv - 1 つの .bat ファイルで複数の yiic コマンドを実行するには?

ファイルをImportCommand class読み取り、そのファイルからデータベースにデータをインポートする があります。コマンド自体は正常に動作します。

ただし、同じコマンドを異なるファイルで数回実行する必要があります。

私の .bat ファイル:

最初のコマンドが実行された後、スクリプトが停止し、users_2.csv ファイルと users_3.csv ファイルは処理されません。

0 投票する
1 に答える
2020 参照

yii - Yii: 「CDbCom mmand failed to execute SQL statement: CDbCommand failed to prepare SQL statement: CDbCommand failed to prepare SQL statement」というメッセージの CDbException

私は Yii を初めて使用し、「yiic migrate」コマンドを使用してデータベースをセットアップしようとしました。

私の移行は次のようになります。

しかし、プロンプトで次のエラーが表示されます。

何か提案はありますか?

どうもありがとうございました。