問題タブ [sonata-admin]
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.
symfony - sonata_type_adminによって呼び出されたときに、SonataのAdminクラスで基になるオブジェクトを取得するにはどうすればよいですか?
そのため、Sonata Adminの編集アクションでは、作成または編集コンテキストに応じて異なるフォームフィールドを表示しようとしています。
たぶん、最初にいくつかの背景。
GalleryエンティティとCoverPhotoエンティティがOneToOneにバインドされています。
ギャラリー:
表紙画像:
対応するGalleryAdminクラスは次のとおりです。
そして、ここでCoverImageAdminを使用します。
「サムネイル」は、サムネイル(ショッカー)を表示するカスタムフォームフィールドです。しかし今、私はこのフィールドが「編集」コンテキストでのみ表示されるようにしたい。
これはケーキのはずです
Adminクラスと条件のメソッド。残念ながら、ネストされたフォームのレンダリングに使用されるCoverImagesAdminクラスでgetSubject()を呼び出すと、常にnullが返されます。getParent();と同じです。
getForm()を呼び出すと、
致命的なエラー:「500」の最大関数ネストレベルに達し、中止しました!/home/flameheart/Projects/KolberPhotography/vendor/symfony/symfony/src/Symfony/Component/OptionsResolver/Options.phpの350行目
フォームのコンテキストを判別するためだけに、AdminとFormMapperのすべてのメソッドを呼び出そうとしましたが、結局何も起こりませんでした。
皆さんはこれをきれいな方法で解決する方法を知っていますか?
php - ソナタ管理者-「注文者」はエンティティでは機能しません
ソナタ管理者リストでエンティティの並べ替えを機能させることはできません。これが私のエンティティです。
そして、これがconfigureListFieldsの定義です。
テーブルヘッドの列をクリックしてエンティティ名で並べ替えると、次のエラーが発生します。
テンプレートのレンダリング中に例外がスローされました( "[Semantical Error] line 0、col 25 near'AS __order_by':Error:Entity \ User has no field orassociation name AS")
この並べ替えをエンティティで機能させて、エンティティ名のアルファベット順に並べ替えるにはどうすればよいですか?
ありがとうございました
ジュリアン・マンセラ
symfony - Sonata 管理バンドルで列のサイズを変更し、コンテンツを中央に配置する方法
ソナタ管理バンドルで列のサイズを変更し、コンテンツを中央に配置するにはどうすればよいですか?
symfony - ソフト削除可能な動作と実際のエンティティの削除
DoctrineExtensionsとStofDoctrineExtensionsBundleを使用して、ソフト削除可能な動作を取得しています。
それは私のアプリケーションのフロントエンドで本当にうまく機能します。
バックエンドでは、エンティティを「ハード」削除するオプションが必要です。
管理コントローラーでフィルターを無効にしました(SonataAdminを使用しています)。
これは機能します(ソフト削除されたエンティティがリストに表示されます)が、削除しようとすると、エンティティは再びソフト削除されます。「ハード」削除を強制するにはどうすればよいですか?
symfony - ソナタ バンドルで定義されていないエンティティ マネージャー
ソナタ管理バンドルを統合しました。次に、sonata ニュース バンドルを正常に統合します。次に、カスタム バンドルを作成しました。Sonata バンドルを使用して、このバンドルを CMS バンドルとして構成したいと考えています。管理セクションに CMS バンドルを表示できますが、新しいアイテムを編集または追加しようとすると、エラーが発生します。
クラス Fcse\CmsBundle\Entity\Book 500 にエンティティ マネージャが定義されていません
内部サーバー エラー - RuntimeException
コマンドを実行すると、Book がエンティティになります
ブックテーブルも作成していません。構成に何か不足していますか?
私の設定ファイルは大きいです。私のcmsバンドルのコードを投稿しています。
このファイルを app/config.yml にインポートします。
symfony - Symfony 2 Sonata Admin - ListMapper でのカスタムソート
Customer
FirstName、LastName などのフィールドを持つエンティティがあります。
また、エンティティには次のようなメソッドがあります。
私のconfigureListFields
関数は次のようになります。
フィールドfullNameをソート可能にするにはどうすればよいですか?
Doctrine ORMの有無にかかわらず、カスタムソート基準を追加するにはどうすればよいですか?
apache - Symfony2 Sonata admin make apache が Windows 7 でダウンする
Symfony を学習し、Sonata Admin Bundleをインストールしました。/admin/login/ を開いた後、初めて開きますが、リロード後にapache がダウンします。そのため、ページをリロードするたびに、Apache を再起動する必要があります。
私のコードのバグだと思うので、ローカルに作業サイトをインストールしましたが、同じ問題が発生しました。
質問に入れる重要な情報がわからない場合は、お知らせください。質問を更新します。
アップデート:
perlエラーが発生しました:
Linuxの解決策を見つけることができます。次のコマンドを実行する必要があります。
しかし、 Windows 7には何もありません。
また、StackOverflow に関するいくつかの解決策: Perl からのロケール設定の警告を修正するには?
解決
問題は APC 拡張機能にありました。キャッシュの拡張機能であるため、開発サーバーで無効にすることができます。それなしで私のために働きます。
php - Sonata Admin のファイル アップロードとの 1 対多の関係 (appendFormFieldElement)
私は現在、SonataAdminBundle、1 対多の関係、およびファイルのアップロードで課題に直面しています。と呼ばれるエンティティとClient
と呼ばれるエンティティがありExchangeFile
ます。1 つClient
は複数ExchangeFile
の を持つことができるため、ここでは 1 対多の関係があります。ファイルのアップロードにはVichUploaderBundleを使用しています。
これはClient
クラスです:
これはExchangeFile
クラスです:
私のClientAdmin
クラスではexchangeFiles
、次の方法でフィールドを追加しました。
これにより、クライアント編集フォームでさまざまな交換ファイルをインライン編集できます。そして、これまでのところうまくいきます: .
問題
しかし、注意点が 1 つあります。緑の「+」記号を 1 回押して (新しい交換ファイル フォーム行を追加)、ファイルシステム内のファイルを選択してから、もう一度「+」記号を押します(新しいフォーム行が Ajax 経由で追加されます)。 )、別のファイルを選択し、[更新] (現在のクライアントを保存) をクリックすると、最初のファイルは保持されません。2 番目のファイルのみがデータベースとファイル システムで見つかります。
私が知る限り、これには次の理由があります: 緑色の「+」記号が 2 回目にクリックされると、現在フォームにあるデータ (クライアントとすべての交換ファイル) を含む現在のフォームが Web サーバーにポストされます。 )。新しいフォームが作成され、リクエストがフォームにバインドされます (これは にあるAdminHelper
クラスで行われますSonata\AdminBundle\Admin
)。
したがって、フォーム全体がバインドされ、フォーム行が追加され、フォームがブラウザーに送り返され、フォーム全体が新しいフォームで上書きされます。ただし、<input type="file" />
セキュリティ上の理由からファイル入力 ( ) を事前設定できないため、最初のファイルは失われます。VichUploaderBundle
ファイルは、エンティティが永続化されている場合にのみファイルシステムに保存されます (これには Doctrine を使用していると思いますprePersist
) が、フォーム フィールド行が追加された場合はまだ発生しません。
私の最初の質問は次のとおりです。この問題をどのように解決できますか、またはどの方向に進むべきですか? 次の使用例を機能させたいと思います: 新しいクライアントを作成したいのですが、3 つのファイルをアップロードすることがわかっています。「新しいクライアント」をクリックし、クライアント データを入力し、緑色の「+」ボタンを 1 回押して、最初のファイルを選択します。次に、「+」記号をもう一度押して、2 番目のファイルを選択します。3 番目のファイルについても同様です。3 つのファイルはすべて永続化する必要があります。
2 番目の質問: 1 対多の関係で 1 つのフォーム行のみを追加したいのに、Sonata Admin がフォーム全体を投稿するのはなぜですか? これは本当に必要ですか?これは、ファイル入力がある場合、新しいフォーム行が追加されるたびに、フォームに存在するすべてのファイルがアップロードされることを意味します。
よろしくお願いします。詳細が必要な場合は、お知らせください。
symfony - Sonata 管理者: ユーザーが所有するエンティティのみを編集できるようにする (ACL)
Sonata Admin に ACL を設定しました。正常に機能するさまざまなユーザー、グループ、および権限があります。これを達成するために、ACL に関する Sonata Admin のドキュメントに従いました。
ここに私の質問があります: バックエンド (管理者) ユーザーが、Symfony および Sonata Admin の組み込み ACL メカニズムで作成したエンティティのみを表示、編集、および削除できるようにするクリーンな方法は何ですか? Sonata Admin は、オブジェクトが ACL テーブルに永続化されると、オブジェクトの所有者 (作成者) を自動的に保存します ( Sonata docsから)。
Owner : オブジェクトが作成されると、現在ログインしているユーザーがそのオブジェクトの所有者として設定され、そのオブジェクトに対するすべてのアクセスが許可されます。
同じ質問が Stackoverflow で既に回答されていますが、その回答では ACL を使用して解決する方法について詳しく説明されていません。