teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

コードの視認性向上

2020/11/05 04:49

投稿

youplus40
youplus40

スコア19

title CHANGED
File without changes
body CHANGED
@@ -29,20 +29,30 @@
29
29
 
30
30
  ```PHP
31
31
  // ArticleSearchType.php
32
- /** * 記事検索用のフォームタイプ
33
- */ class ArticleSearchType extends AbstractType
34
- { /** * {@inheritdoc}
35
- */ public function buildForm(FormBuilderInterface $builder, array $options)
36
- { $loginStaff = $options['login_staff']; $shop = $options['login_staff']->getShop();
32
+
33
+ /**
34
+ * 記事検索用のフォームタイプ
35
+ */
36
+ class ArticleSearchType extends AbstractType
37
+ {
38
+ /**
39
+ * {@inheritdoc}
40
+ */
41
+ public function buildForm(FormBuilderInterface $builder, array $options)
42
+ {
43
+ $loginStaff = $options['login_staff'];
44
+ $shop = $options['login_staff']->getShop();
37
45
  // 詳細検索
38
- $builder->add("advanced", "hidden", array( "required" => false,
46
+ $builder->add("advanced", "hidden", array(
47
+ "required" => false,
39
48
  ));
40
49
 
41
50
  // 記事種別
42
51
  $builder->add("articleType", "hidden", array(
43
52
  "required" => false,
44
53
  ));
54
+
45
- // 記事ステータス
55
+ // 記事ステータス
46
56
  $builder->add("articleStatus", "hidden", array(
47
57
  "required" => false,
48
58
  ));
@@ -121,20 +131,23 @@
121
131
  $form->add("expireDateTimeFrom", "datetime", array(
122
132
  "required" => false,
123
133
  "widget" => "single_text",
134
+ "format" => "yyyy/MM/dd HH:mm",
124
- "format" => "yyyy/MM/dd HH:mm", "attr" => array("class" => "formDateTime"),
135
+ "attr" => array("class" => "formDateTime"),
125
136
  ));
126
137
  $form->add("expireDateTimeTo", "datetime", array(
127
138
  "required" => false,
128
139
  "widget" => "single_text",
129
140
  "format" => "yyyy/MM/dd HH:mm",
130
- "attr" => array("class" => "formDateTimeTo"), ));
141
+ "attr" => array("class" => "formDateTimeTo"),
142
+ ));
131
143
 
132
144
  // 記事種別が 全て or コーディネート or レコメンドアイテム の場合
133
145
  if (in_array($articleType, array("", "coordinate", "recommend"))) {
134
146
  // 着用者
135
147
  $form->add("wearer", "staffChoice", array(
136
148
  "required" => false,
137
- "search_params" => array("shop" => $shop), ));
149
+ "search_params" => array("shop" => $shop),
150
+ ));
138
151
 
139
152
  // 品番
140
153
  $form->add("itemNo", "text", array(

2

該当クラスのコードを追加

2020/11/05 04:49

投稿

youplus40
youplus40

スコア19

title CHANGED
File without changes
body CHANGED
@@ -15,6 +15,7 @@
15
15
  ### 該当のソースコード
16
16
 
17
17
  ```PHP
18
+ //BaseArticleController.php
18
19
  protected function indexAction(Request $request)
19
20
  {
20
21
  // 検索フォームを作成(下の::classの部分がエラーの該当箇所)
@@ -26,6 +27,235 @@
26
27
  }
27
28
  ```
28
29
 
30
+ ```PHP
31
+ // ArticleSearchType.php
32
+ /** * 記事検索用のフォームタイプ
33
+ */ class ArticleSearchType extends AbstractType
34
+ { /** * {@inheritdoc}
35
+ */ public function buildForm(FormBuilderInterface $builder, array $options)
36
+ { $loginStaff = $options['login_staff']; $shop = $options['login_staff']->getShop();
37
+ // 詳細検索
38
+ $builder->add("advanced", "hidden", array( "required" => false,
39
+ ));
40
+
41
+ // 記事種別
42
+ $builder->add("articleType", "hidden", array(
43
+ "required" => false,
44
+ ));
45
+ // 記事ステータス
46
+ $builder->add("articleStatus", "hidden", array(
47
+ "required" => false,
48
+ ));
49
+
50
+ // 本部スタッフでログインしている場合はブランド、ショップで検索可
51
+ if ($loginStaff->isHq()) {
52
+ // ブランド
53
+ $builder->add("brand", "brandChoice", array(
54
+ "required" => false,
55
+ ));
56
+
57
+ // ショップ
58
+ $builder->add("shop", "shopChoice", array(
59
+ "required" => false,
60
+ ));
61
+ }
62
+
63
+ // 記事ID
64
+ $builder->add("id", "text", array(
65
+ "required" => false,
66
+ ));
67
+
68
+ // 検索ワード
69
+ $builder->add("word", "text", array(
70
+ "required" => false,
71
+ "mb_convert_kana_option" => null,
72
+ ));
73
+
74
+ // 検索ボタン
75
+ $builder->add('search', 'submit');
76
+
77
+ // サブミットされたデータによりフォームを動的に生成する
78
+ $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) use ($shop) {
79
+ $data = $event->getData();
80
+ $form = $event->getForm();
81
+
82
+ // 記事種別
83
+ $articleType = "";
84
+ if (isset($data["articleType"]) && in_array($data["articleType"], Parameters::getArticleTypeKeys())) {
85
+ $articleType = $data["articleType"];
86
+ }
87
+ $data["articleType"] = $articleType;
88
+
89
+ // 記事ステータス
90
+ $articleStatus = "";
91
+ if (isset($data["articleStatus"]) && in_array($data["articleStatus"], Parameters::getArticleStatusKeys())) {
92
+ $articleStatus = $data["articleStatus"];
93
+ }
94
+ $data["articleStatus"] = $articleStatus;
95
+
96
+ $event->setData($data);
97
+
98
+ // 詳細検索のフォームを追加
99
+ if (isset($data["advanced"]) && $data["advanced"]) {
100
+ // 投稿者
101
+ $form->add("author", "staffChoice", array(
102
+ "required" => false,
103
+ "search_params" => array("shop" => $shop),
104
+ ));
105
+
106
+ // 投稿日時
107
+ $form->add("publishDateTimeFrom", "datetime", array(
108
+ "required" => false,
109
+ "widget" => "single_text",
110
+ "format" => "yyyy/MM/dd HH:mm",
111
+ "attr" => array("class" => "formDateTime"),
112
+ ));
113
+ $form->add("publishDateTimeTo", "datetime", array(
114
+ "required" => false,
115
+ "widget" => "single_text",
116
+ "format" => "yyyy/MM/dd HH:mm",
117
+ "attr" => array("class" => "formDateTimeTo"),
118
+ ));
119
+
120
+ // 有効期限
121
+ $form->add("expireDateTimeFrom", "datetime", array(
122
+ "required" => false,
123
+ "widget" => "single_text",
124
+ "format" => "yyyy/MM/dd HH:mm", "attr" => array("class" => "formDateTime"),
125
+ ));
126
+ $form->add("expireDateTimeTo", "datetime", array(
127
+ "required" => false,
128
+ "widget" => "single_text",
129
+ "format" => "yyyy/MM/dd HH:mm",
130
+ "attr" => array("class" => "formDateTimeTo"), ));
131
+
132
+ // 記事種別が 全て or コーディネート or レコメンドアイテム の場合
133
+ if (in_array($articleType, array("", "coordinate", "recommend"))) {
134
+ // 着用者
135
+ $form->add("wearer", "staffChoice", array(
136
+ "required" => false,
137
+ "search_params" => array("shop" => $shop), ));
138
+
139
+ // 品番
140
+ $form->add("itemNo", "text", array(
141
+ "required" => false,
142
+ ));
143
+ }
144
+
145
+ // 記事種別が 全て or ショップイベント or ブランド共通イベント の場合
146
+ if (in_array($articleType, array("", "shopevent", "brandevent"))) {
147
+ // イベント開始日時
148
+ $form->add("eventStartDateFrom", "datetime", array(
149
+ "required" => false,
150
+ "widget" => "single_text",
151
+ "format" => "yyyy/MM/dd HH:mm",
152
+ "attr" => array("class" => "formDateTime"),
153
+ ));
154
+ $form->add("eventStartDateTo", "datetime", array(
155
+ "required" => false,
156
+ "widget" => "single_text",
157
+ "format" => "yyyy/MM/dd HH:mm",
158
+ "attr" => array("class" => "formDateTimeTo"),
159
+ ));
160
+
161
+ // イベント終了日時
162
+ $form->add("eventEndDateFrom", "datetime", array(
163
+ "required" => false,
164
+ "widget" => "single_text",
165
+ "format" => "yyyy/MM/dd HH:mm",
166
+ "attr" => array("class" => "formDateTime"),
167
+ ));
168
+ $form->add("eventEndDateTo", "datetime", array(
169
+ "required" => false,
170
+ "widget" => "single_text",
171
+ "format" => "yyyy/MM/dd HH:mm",
172
+ "attr" => array("class" => "formDateTimeTo"),
173
+ ));
174
+ }
175
+ }
176
+ });
177
+ }
178
+
179
+ /**
180
+ * {@inheritdoc}
181
+ */
182
+ public function setDefaultOptions(OptionsResolver $resolver)
183
+ {
184
+ $resolver->setDefaults(array(
185
+ "method" => "GET",
186
+ "csrf_protection" => false,
187
+ "validation_groups" => false,
188
+ ));
189
+
190
+ $resolver->setRequired(array(
191
+ "login_staff",
192
+ ));
193
+ }
194
+
195
+ /**
196
+ * {@inheritdoc}
197
+ */
198
+ public function buildView(FormView $view, FormInterface $form, array $options)
199
+ {
200
+ $loginStaff = $options['login_staff'];
201
+ $shop = $options['login_staff']->getShop();
202
+
203
+ // 有効な記事種別
204
+ if ($loginStaff->isHq()) {
205
+ // 本部管理画面
206
+ $view->vars['enabledArticleType'] = array(
207
+ "" => "全て",
208
+ "brandevent" => "ブランドイベント",
209
+ "coordinate" => "コーディネート",
210
+ "recommend" => "レコメンドアイテム",
211
+ "diary" => "ダイアリー",
212
+ "shopevent" => "ニュース",
213
+ );
214
+ } else {
215
+ // ショップ管理画面
216
+ $view->vars['enabledArticleType'] = array(
217
+ "" => "全て",
218
+ "coordinate" => "コーディネート",
219
+ "recommend" => "レコメンドアイテム",
220
+ "diary" => "ダイアリー",
221
+ "shopevent" => "ニュース",
222
+ );
223
+ }
224
+
225
+ // 有効な記事ステータス
226
+ if ($loginStaff->isHq() or $shop->getApprovalFlg()) {
227
+ // 本部管理画面 or 承認フラグが有効なショップ管理画面
228
+ $view->vars["enabledArticleStatus"] = array(
229
+ "" => "全て",
230
+ "draft" => "下書き",
231
+ "pending" => "承認待ち",
232
+ "reject" => "非承認",
233
+ "publish" => "公開",
234
+ "hidden" => "非公開",
235
+ );
236
+ } else {
237
+ // 承認フラグが無効なショップ管理画面
238
+ $view->vars["enabledArticleStatus"] = array(
239
+ "" => "全て",
240
+ "draft" => "下書き",
241
+ "publish" => "公開",
242
+ "hidden" => "非公開",
243
+ );
244
+ }
245
+ }
246
+
247
+ /**
248
+ * {@inheritdoc}
249
+ */
250
+ public function getName()
251
+ {
252
+ return "q";
253
+ }
254
+ }
255
+
256
+
257
+ ```
258
+
29
259
  ### 試したこと
30
260
 
31
261
  このエラーのよくある原因がphpのバージョンが低い (<5.4)ことのようですが、

1

エラーの原因となるphpバージョンの説明

2020/11/05 04:45

投稿

youplus40
youplus40

スコア19

title CHANGED
File without changes
body CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  ### 試したこと
30
30
 
31
- このエラーのよくある原因がphpのバージョンが低いことのようですが、
31
+ このエラーのよくある原因がphpのバージョンが低い (<5.4)ことのようですが、
32
32
  PHPのバージョンは5.6.40であり、```php -v```や```phpinfo();```でもバージョンを確認しております。
33
33
 
34
34
  ### 補足情報(FW/ツールのバージョンなど)