問題タブ [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.
php - Yii コマンド ライン - Web アプリ全体を初期化し、yic を介して他のコントローラー アクションを呼び出す方法は?
更新 - 次のように application.controllers.* を config/console.php に追加することで、これを解決できました。
次に、次のように cli コマンドでアクションを呼び出します。
コマンドラインから実行できる protected/commands/dBManagerCommand.php に単純な yiic コマンドがあります。
実行すると、次のエラーが発生します。どうやら他のコントローラーが見つからないようです。アプリケーションの残りの部分で、既存のコントローラーからメソッドを実行したいと考えています。これは bash シェルから実行されます (コードの色は無視されます)。
それでは、これらのコントローラーメソッドをどのようにロードできますか? これらのコントローラーファイルを手動で含めようとせずに、アプリ全体を初期化する適切な方法があると確信しています。
みんな、ありがとう!
以下の MVC アーキテクチャの誤用に関する批判に応えて、コメント フィールドが十分に長くないため、この応答をここに貼り付けます。
まず、Web インターフェイス用のすべてのコントローラーをプリロードするわけではありませんが、この目的のために問題を解決し、正常に動作します。import メソッドは、最初はコントローラーを介してリクエストを受け取りますが、その後、db およびファイル システム レベルのロジックと操作に適したモデル メソッドを呼び出します。(そして、主に Yii の動作関連のメモリ リークのため、この目的専用のインポート モデル クラスが他にもあります)。
コントローラーでロジックを実行してはならないという考えは、まったく間違っています。この場合、入力フィルタリング ロジックを実行するコントローラーでインポート メソッドを作成することにしました。これは、ユーザー (人間または cron) が送信する必要がある多数の入力があり、これは、ファイルをデータベースに解析するタスク。このコントローラーのインポート メソッドは、ユーザー入力に基づいてファイルを解析し、事前にフィルター処理されたデータをモデル メソッドに渡します。ファイル入力データは実際には信頼できないユーザー入力であり、ユーザー要求パラメーターに基づいて前処理を行う必要があったため、これを選択しました。はい、モデルメソッドでこれを行うことができますが、モデルでリクエストデータを処理するか、大量の引数とデータを渡すことになり、面倒でメモリ使用量が増加します。
csv - 1 つの .bat ファイルで複数の yiic コマンドを実行するには?
ファイルをImportCommand class
読み取り、そのファイルからデータベースにデータをインポートする があります。コマンド自体は正常に動作します。
ただし、同じコマンドを異なるファイルで数回実行する必要があります。
私の .bat ファイル:
最初のコマンドが実行された後、スクリプトが停止し、users_2.csv ファイルと users_3.csv ファイルは処理されません。
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」コマンドを使用してデータベースをセットアップしようとしました。
私の移行は次のようになります。
しかし、プロンプトで次のエラーが表示されます。
何か提案はありますか?
どうもありがとうございました。