問題タブ [lithium]
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 - Lithium での MySQL 関数の呼び出し
Lithium Framework のCRUDで MySQL 関数 ( GeomFromText()やSELECT ASなど)を呼び出すにはどうすればよいですか? database->read()を使用するのは不便です (データベースの列を頻繁に変更します)。変数の値に関数を含めると、エスケープされるだけです。
php - リチウム:ある検証フィルターを別の内部から呼び出す方法
私は私が拡張するベースモデルを持っています。その中で、2つの検証フィルターを定義しました。1つはレコードが一意であるかどうかをチェックし、もう1つはレコードが存在するかどうかをチェックします。これらは、一方の戻り値が他方の逆になることを除いて、まったく同じように機能します。
したがって、同じコードを2回記述して、異なる値を返すだけでは正しくありません。あるカスタムバリデーターを別のカスタムバリデーターから呼び出す方法を知りたいのですが。
unique
バリデーターのコードは次のとおりです。
exists
このように動作するはずです:
しかし、明らかに、それはそのように行うことはできません。検証関数を無名関数として定義し、それを変数に割り当てて、クロージャーの代わりにそれを渡す必要がありますか?unique
または、内部から呼び出す方法はありますexists
か?
php - call_user_func_array の適切な使用
リチウム PHP を smarty で拡張しようとしていますが、リチウム ヘルパーへのアクセスを許可する smarty プラグイン以外はすべて機能しています。
私の smarty 関数は、リチウム ヘルパーの「キャッチオール」を意図しています。私が苦労している部分は、ヘルパーパラメーターをコールバックに動的に追加することです。
簡素化されたコード
これにより、<a href="/Google">Google</a>
いくつかのさらなるテストは、上記が $params 配列の最初の項目のみをコールバックに渡すことを示しました...奇妙です。だから私はそれを独自の配列にラップしました。それを受け取ってください、私には説明できません!
これにより、リチウム エラーが発生しますが、ヘルパーには、配列から個々のパラメーターとして変換された引数ではなく、配列が渡されているようです。
エラー スニペット
「URL に一致するパラメータが見つかりませんでし( 0 => 'Google', 1 => 'http://www.google.com', 'controller' => 'pages', 'action' => 'index')
た。
そのため、call_user_func_array メソッドの使い方が間違っていることがわかりました。
これが私の目的を達成するための唯一の解決策であることに満足しているわけではありません。関数に任意の数の引数をいつでも動的に渡すためのより良い方法を考えることができれば、私は素晴らしいと思います。
注: $this->
html
->link
は私の問題を説明するための単純化された方法です。そのオブジェクトhtml
のlink
一部は実際に動的に変更されるため、完全に動的な関数引数が必要になります。
php - TDD用のPHPフレームワーク
私は(うまくいけば)スタートアップに発展するはずの個人的なプロジェクトに取り組み始めています。プロジェクトはうまく拡張する必要があり、今はTDDに時間を投資したいと思います。
私はLithiumの大ファンであり、Lithiumには独自のテストスイートが組み込まれていることを認識していますが、確かなドキュメントが見つからず、実際のTDDを行ったことがありません。
私が行くためのより良い方法はありますか?それとも、リチウムに固執して学習プロセスを磨く必要がありますか?
編集:明確にするために。私は、フレームワークのテストではなく、PHPフレームワークについて話しています。
php - コレクションの列挙リストとモデル内のコレクションの変更でLithiumPHPフレームワークを使用する方法
最小限のアプローチとドキュメントストア(つまりMongodb)中心のモデルが好きなので、Lithiumフレームワークを使用してアプリケーション構成インターフェイスを構築したいと考えています。
ただし(まだ完全にはリリースされていないことはわかっていますが)、簡単なブログチュートリアルから先に進むための情報、チュートリアル、または例はほとんどありません。
私が今やろうとしているのは、Mongodbにあるコレクションを表示するアプリを作成してから、選択したコレクションを操作できるようにすることです。私は理解できないようです:
a)コレクションを列挙するモデルをどのように構築しますか?できれば内部の命名スキームに従って、
b)使用するコレクションの名前を指定できるように、従来のモデルを破るにはどうすればよいですか?
これらの2つの質問に答えるために私が苦労していることが2つあると思います-おそらく、MVCでモデルを単純なcollection-model-controller-viewの例を超えて移動する方法の根本的な誤解、そして次に、 mongodatasource使用するコレクション。
感謝の気持ちを込めて受け取ったポインタや例。
クリス
アップデート::
そこで、コレクションを設定する方法を理解しました。参考までに、次のように$_meta配列にソースを設定できます。
ただし、DBにあるすべてのコレクションを一覧表示するモデルの使用方法はまだわかりません。哲学的かつ技術的な方法からそれを行う方法について何かアイデアはありますか?
さらなる更新::
だから私は以下のコメントのおかげでもう少し得ました。少なくとも、質問を少し言い換えることができるかもしれません。モデルを次のように定義できます。
その後、私の見解では、私は使用することができます:
それは機能しますが、私が本当にやりたいのは、モデルに「testcolls」メソッドを作成することではありませんが、Medhiが以下に提案するように、findメソッドをオーバーライドする必要があります。私はそれを行う方法とそれが何を返す必要があるのか理解できないようです。ドキュメントはこれについてあまり明確ではありません。
最終更新
以下のコメントと少しの実験に基づいて、コレクションをパラメーターとしてfindを呼び出すことができるようにするために機能する次のことを思いつきました。
モデル:
コントローラ:
コレクションのリストを返すモデルを取得することも、最終的には非常に簡単でした。
コントローラはオプションやフィルタをサポートしないことに注意してください。
sql - 左結合のリチウム カウント
動的に生成された要素を含む大規模なクエリの一部として、左結合とカウントを行う必要があります。これは私が必要とするクエリです。
結合クエリを作成しようとしましたが、以下に示すように、Lithium は結合が関係の一部であることを期待しているようです (関係は定義されていません) (現時点ではカウントを無視しています)。
これはNotice: Undefined index: ClientTest in /usr/local/www/oars/libraries/lithium/data/collection/RecordSet.php on line 340
、関係に関連するコードのようです。
Client と ClientTest の間のリレーションシップを定義するhasMany
と、左側の結合の構築が処理されますが、Client フィールドとカウントを取得する方法はありますか?
これにより、が発生( ! ) Notice: Undefined index: count(ClientTest in /usr/local/www/oars/libraries/lithium/data/source/Database.php on line 650
するため、不可能であるか、間違った構文を使用しています。
でクエリを直接発行することもできますが、クエリClient::connection()->read($sql)
には動的な要素があるため、とにかく SQL を作成する必要があります。
上記の方法を機能させる方法はありますか、それとも SQL を手動で作成する必要がありますか?
lithium - リチウムリンクルーティング
最初のLithiumアプリを作成しようとしていますが、非常に奇妙なエラーが発生します。
インデックスビューに線がありますが、
<td><?php echo $this->html->link($question->title, array('controller'=>'questions','action'=>'view','id'=>$question->id)); ?></td>
私が想像するのは、そのレコードビューにリンクすることですが、'questions/view'.$question->id'
それを使用すると、配列URLを使用すると致命的になります。
Fatal error: Uncaught exception 'lithium\net\http\RoutingException' with message 'No parameter match found for URL
('コントローラー'=>'質問'、'アクション'=>'ビュー'、'id' => '1').' in /Applications/MAMP/htdocs/learning-lithium/libraries/lithium/net/http/Router.php on line 306
これは、ルーターがヘルパーのURLと一致させようとしているように見えますが、何らかの理由で一致できないため、例外がスローされています。誰かがこれがなぜであるかについて何か考えを持っていますか?私はCakePHPの観点からリチウムを攻撃しているので、これは私には奇妙に思えます。
php - リチウムフォームヘルパーデータとエラーがありませんか?
Lithium アプリの動作を確認するためにテスト用の Lithium アプリを作成していますが、フォーム ヘルパーが返されたデータや検証エラーを認識していないようです。
現時点では、手動でエラーを返し、ビューで処理する必要があります。
QuestionsController::ask
ビュー/質問/ask.html.php
lithium\template\helper\Form
から、field()
メソッドがtemplate
パラメーターを受け取ることができることがわかります。この例では<li{:wrap}>{:label}{:input}{:error}</li>
、検証メッセージを表示するためのヘルパーに容量があるためです。
では、コントローラーでデータを整理して、ヘルパーがフィールドにデータを入力し、エラーを表示するためにビューに戻されるようにするにはどうすればよいでしょうか?
編集
例の「Sphere」アプリもこの方法を使用していることを追加する必要がありますが、それは標準ですか? (参照)
lithium - Memcache、Mongodb、またはリチウムセッション用の他のデータベースストレージ
Lithiumフレームワークに慣れてきて、LithiumセッションにMongoDBまたはMemcacheを使用するためのサンプルがあるかどうか疑問に思いました。新しいセッションアダプタを作成する必要がありますか?
php - Lithium と phpActiveRecord - ACL の関連付けは正しいですか?
Li3_activerecordを使用して、phpActiveRecordでリチウムを使用しています。ORM とアソシエーションに戻ってから数年が経ちましたが、現在の ACL の設定に少し戸惑っています。
簡潔にするために簡略化した、私のテーブルとその関連付けを次に示します。
予期しない結果が得られたので、まず関連付けが正しいかどうかを確認したいと思います。基本的に、ユーザーは 1 つのロールしか持つことができません。リソースは、コントローラー、アクション、およびアクション内で実行できる特定の手順の組み合わせによって定義されます。アクセス許可テーブルを通じて、リソースに対するアクセス許可がユーザーに与えられます。
ORM アソシエーションの書き方に何か問題があると思いますか?