1からまでを表示 (計34) |
誰もいなさそうですね…
Posted on 10月 23, 2020 at 1:08 午後
|
8.5.4を使用中です。
あるブロックで使っているjsライブラリをアセットとして登録して、ブロックのcontroller.phpからrequireAsset()してロードし、ブロックのview.jsで使用しています。
キャッシュをオフにしているときは正しく読み込まれるのですが、キャッシュが有効化されると、アセットのjsライブラリよりも先にブロックのview.jsが読み込まれるような順番に結合されてしまい、ブロックのview.jsで呼び出し時にエラーとなってしまいます。
他のブロックではこうならないのですが、特定のブロックで起こってしまいます。なぜこうなってしまうのでしょうか?こういうことが起こりそうな要因をご存じの方がいれば教えて下さい。
ちなみに該当ページではこのブロック以外にview.jsを読み込む必要のあるようなブロックを使ってはいませんでした。
現状の実装は以下のような感じです。
application/bootstrap/app.php
$al = AssetList::getInstance();
$al->register('javascript', 'somelibrary', 'js/somelibrary/somelibrary.min.js');
application/blocks/someblock/controller.php
public function registerViewAssets($outputContent = '')
{
$this->requireAsset('javascript', 'somelibrary');
}
非キャッシュ時に出力されるスクリプトタグ
<script type="text/javascript" src="/application/js/somelibrary/somelibrary.min.js?ccm_nocache=d846f33d9148b37e63b22ff9a7339155be77a7f9"></script>
<script type="text/javascript" src="/application/blocks/someblock/view.js?ccm_nocache=d846f33d9148b37e63b22ff9a7339155be77a7f9"></script>
キャッシュ時に出力されるスクリプトタグ
<script type="text/javascript" src="(略) /application/blocks/someblock/view.js?ccm_nocache=d846f33d9148b37e63b22ff9a7339155be77a7f9 /application/js/somelibrary/somelibrary.min.js?ccm_nocache=d846f33d9148b37e63b22ff9a7339155be77a7f9 "></script>
Posted on 10月 19, 2020 at 8:19 午後
|
なるほど、なかなか遠い道のりですね…。
今回は見た目だけ作れるようになればいいので、エディタのコンテンツテンプレートで作ろうと思います。
ご返信ありがとうございます。
Posted on 10月 12, 2020 at 7:39 午後
|
使用しているバージョンは8.5.4です。
添付画像1のようなコンテンツをユーザーが制作できるような機能を提供するにあたって、エクスプレスを使って作ろうとしています。
(最初はBlock Developerを使って作ろうと思っていたのですが、どうしてもデータが入れ子の入れ子になってしまうのを避けられなさそうだったので、エクスプレスが使えるか調査しています)
「各工程のタイトル」「各工程の価格」のペアを、それぞれ任意の数持った事例のリストを作るため、
「事例」と「工程」のデータオブジェクトを作り、アソシエーション機能で1対多の関係で一つの「事例」に複数の「工程」を登録できるようにしたいと思っています。
添付画像2,3のように「事例」の登録フォームに紐付けて追加済みの「工程」をチェックボックス選択することができるようにはなりました。
しかし各「工程」の価格は「事例」によってまちまちで、使い回しが効かないため、ユーザーが「事例」を追加するときに毎回新規の「工程」を複数作って追加することになるかと思います。
この際に、「事例」を追加するときに同一フォーム上で新規の「工程」を追加することはできないでしょうか?
新規「事例」を追加するとき、「工程」をその数だけ毎回新規で作って紐付けないといけないのはユーザーにとってかなり酷な作業かと思っています。
もしくは、こういった用途にはエクスプレスのアソシエーションは不向きで、もっといい作り方があるようでしたら教えていただけると幸いです。
よろしくお願いします。
Posted on 10月 12, 2020 at 6:08 午後
|
ご報告ありがとうございます。
こんな便利なコマンドがあったんですね。
ひとまず今はバージョン8.5.4で支障なく動いているので、このまま次回以降のアップデートを待とうと思います。
色々とありがとうございます。
Posted on 6月 16, 2020 at 9:08 午後
|
手元のリポジトリでdiffを見たところ、8.5.2 → 8.5.3のファイルで、
/concrete/src/Updater/Migrations/Migrations/Version20141024000000.php
/concrete/src/Updater/Migrations/Migrations/Version20160725000000.php
/concrete/src/Updater/Migrations/Migrations/Version20170316000000.php
の過去のマイグレーションファイルが一部編集されているようです。
今回の問題になったTreeFileFolderNodesテーブルも編集内容に入っていました。この辺の開発の作法にあまり詳しくないのですが、リリースされたマイグレーションのファイルを編集するといろいろ不具合が起こるんじゃないかなと思いまして…。
Posted on 6月 15, 2020 at 3:57 午後
|
いろいろ試行錯誤した結果、
・8.5.2で c5:update --rerun を行う
・8.5.2に8.5.3の Version20190309000000.php をコピーし、migration:execute 20190309000000 --up を行う
(これをやらないと8.5.3でCLIツールが起動できない)
・concrete ディレクトリを8.5.3に置き換えて、c5:update を行う
という手順で解決しました。
しかし、今までのアップデートではこんなことは起こらず、2つの別々のWebサイトの環境で両方同じエラーが出てたし、アップデートで過去のマイグレーションファイルが編集されてたりするし、なんかのバグなんじゃないかな…という気はしています…。
色々と勉強になりました。ありがとうございました!
Posted on 6月 13, 2020 at 12:38 午前
|
ありがとうございます。すみません、ORMのことよくわかってないのに変なことしちゃってましたね…
SystemDatabaseMigrationsテーブルを確認しましたが、20190925072210より大きな日付のレコードはありませんでした。
この場合、一旦20190309000000から先のレコードを全て削除して、もう一度8.5.3でc5:updateしたほうがいいのでしょうか?
Posted on 6月 10, 2020 at 11:06 午後
|
ご返信ありがとうございます。
こういう場合はマイグレーションのファイルをテーブル名で検索すると良いんですね。
確かに、DBのそのテーブルには該当する値がありませんでした。
解決方法としてご提示いただいたコマンドについてですが、
コマンドラインツールの起動自体が同じDBエラーで止まっており、
指定のコマンドを打ってもマイグレーション出来なかったため、
8.5.2のMigrationsフォルダに8.5.3の該当マイグレーションファイル(Version20190309000000.php)をコピーして、コマンドを実行できました。
ところが、8.5.3でc5:updateコマンドを打ったところ、
別のマイグレーションの途中でエラー終了してしまい、アップデートできませんでした。
** Executing migration: 20190509205043
Refreshing schema for Concrete\Core\Entity\Express\Entry...
Refreshing schema for Concrete\Core\Entity\Express\Control\PublicIdentifierControl...
Refreshing schema for Concrete\Core\Entity\Express\Control\Control...
In AbstractMySQLDriver.php line 115:
An exception occurred while executing 'ALTER TABLE ExpressFormFieldSetPublicIdentifier
Controls ADD CONSTRAINT FK_67180C04BF396750 FOREIGN KEY (id) REFERENCES ExpressFormFie
ldSetControls (id) ON DELETE CASCADE':
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
In PDOConnection.php line 106:
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
In PDOConnection.php line 104:
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
見た感じ、マイグレーション20190509205043の途中でエラーになっているのですが、
これはどう対処するのがよいのでしょうか。
Posted on 6月 10, 2020 at 4:50 午後
|
PHPのバージョンは7.4.6です。
concrete5 8.5.2から、いつものように"concrete"フォルダを置き換えてのアップデートを試みたところ、
添付画像のようなデータベースのエラーが出てしまいます。
一旦8.5.2にファイルを戻したら、正しく表示されます。
キャッシュを消して再挑戦してもエラーは変わりませんでした。
CLIから c5:update しようとしても、CLI上でも同じエラーが表示されました。
テーブルが見つからないとのことですが、どう対処すればよいでしょうか?
Doctrine \ DBAL \ Exception \ TableNotFoundException
An exception occurred while executing 'SELECT * FROM TreeFileFolderNodes WHERE treeNodeID = ?' with params ["5"]: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'concrete5.TreeFileFolderNodes' doesn't exist
Previous exceptions
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'concrete5.TreeFileFolderNodes' doesn't exist (42S02)
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'concrete5.TreeFileFolderNodes' doesn't exist (42S02)
Posted on 6月 09, 2020 at 6:06 午後
|