hidenorigoto / symfony2-book Goto Github PK
View Code? Open in Web Editor NEW基本からしっかり学ぶSymfony2入門 サポートサイト
基本からしっかり学ぶSymfony2入門 サポートサイト
P.264でバージョンを指定せずにcomposerでhautelook/alice-bundle
をインストールしているため、書籍のバージョン(0.2; https://github.com/hidenorigoto/symfony2-book/blob/53be5f8d99fb9e2f87cb82011c31f0a5aec68c65/composer.lock#L2581-L2582)と現在インストールされるバージョン(v1.1.0)が変わってしまっています。
その影響で、APIが変わってしまったようで、書籍のリスト9-13は動作しません。
$ php app/console doctrine:fixtures:load
Careful, database will be purged. Do you want to continue y/N ?y
Fatal error: Class 'Hautelook\AliceBundle\Alice\DataFixtureLoader' not found in ...
v1.1.0で動作するように直そうかと思いましたが、変更が大きいようで、ちょっとよくわかりませんでした。
教科書通りにすすめていきphp app/console server:startをコマンドプロンプトから実行したところ
[ERROR]This command needs the pcntl extension to runと表示されます。
WEBでも調べたのですがどのようにインストールしたらいいのか分からず
次へ進めません。同じ環境かの方も同様の問題がおこるのではないでしょうか。
手許の環境(MAMP 3.4)では以下のようになりました。ご参考まで。
$ php app/console server:start
This command needs the pcntl extension to run.
You can either install it or use the server:run command instead to run the built-in web server.
Do you want to start server:run immediately? [Yn]
Server running on http://127.0.0.1:8000
Quit the server with CONTROL-C.
Symfony 2.7をインストールすると、symfony/phpunit-bridge
が含まれています。
$ symfony new classic-symfony 2.7
$ cd classic-symfony/
$ composer show -i | grep symfony
symfony/assetic-bundle v2.7.1 Integrates Assetic into Symfony2
symfony/monolog-bundle v2.8.2 Symfony MonologBundle
symfony/phpunit-bridge v2.7.7 Symfony PHPUnit Bridge
symfony/swiftmailer-bundle v2.3.8 Symfony SwiftmailerBundle
symfony/symfony v2.7.7 The Symfony PHP framework
しかし、ここのサンプルコードには含まれていないようです。
Line 28 in 53be5f8
6行目
TimedTwigEngineというクラスが…
と記述されていますが、リスト2-7にそのようなクラスはありません。
初めまして”P.168 お問い合わせ検索機能”のエラーが発生し行き詰まってしまったのでご教授願います。
リスト6-16~18までを実装し、管理画面から”お問い合わせ管理"をクリックすると
Undefined method 'findAllByKeyword'. The method name must start with either findBy or findOneBy!
500 Internal Server Error - BadMethodCallException
というエラーが表示されてしまいます。
P167の問い合わせ編集画面までは上手く動作していたので、環境は問題ないかと思っています。
よろしくお願いします。
●環境
Windows10
Xampp V3.2.2
Symfony V2.8.9
よくわかりませんが、手許の環境だと、以下のエラーが出ましたので報告しておきます。
$ php phpunit.phar -c app src/AppBundle/Tests/Controller/BlogControllerTest.php
PHPUnit 5.1.3 by Sebastian Bergmann and contributors.
E 1 / 1 (100%)
Time: 736 ms, Memory: 10.00Mb
There was 1 error:
1) AppBundle\Test\Controller\BlogControllerTest::ブログ記事一覧が表示されること
Symfony\Component\DependencyInjection\Exception\InvalidArgumentException: The file ".../classic-symfony/src/AppBundle/DependencyInjection/../Resources/config/services.yml" does not contain valid YAML.
.../classic-symfony/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php:323
.../classic-symfony/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php:44
.../classic-symfony/src/AppBundle/DependencyInjection/AppExtension.php:19
.../classic-symfony/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php:55
.../classic-symfony/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/MergeExtensionConfigurationPass.php:39
.../classic-symfony/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/Compiler.php:107
.../classic-symfony/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerBuilder.php:570
.../classic-symfony/app/bootstrap.php.cache:2633
.../classic-symfony/app/bootstrap.php.cache:2411
.../classic-symfony/vendor/liip/functional-test-bundle/Test/WebTestCase.php:149
.../classic-symfony/vendor/liip/functional-test-bundle/Test/WebTestCase.php:252
.../classic-symfony/src/AppBundle/Tests/Controller/BlogControllerTest.php:15
Caused by
Symfony\Component\Yaml\Exception\ParseException: The reserved indicator "@" cannot start a plain scalar; you need to quote the scalar at line 7 (near "factory: [@doctrine.orm.entity_manager, getRepository]").
.../classic-symfony/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php:321
.../classic-symfony/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php:44
.../classic-symfony/src/AppBundle/DependencyInjection/AppExtension.php:19
.../classic-symfony/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php:55
.../classic-symfony/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/MergeExtensionConfigurationPass.php:39
.../classic-symfony/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/Compiler.php:107
.../classic-symfony/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerBuilder.php:570
.../classic-symfony/app/bootstrap.php.cache:2633
.../classic-symfony/app/bootstrap.php.cache:2411
.../classic-symfony/vendor/liip/functional-test-bundle/Test/WebTestCase.php:149
.../classic-symfony/vendor/liip/functional-test-bundle/Test/WebTestCase.php:252
.../classic-symfony/src/AppBundle/Tests/Controller/BlogControllerTest.php:15
FAILURES!
Tests: 1, Assertions: 0, Errors: 1.
以下のように修正したところ、エラーは解消しました。
--- a/src/AppBundle/Resources/config/services.yml
+++ b/src/AppBundle/Resources/config/services.yml
@@ -4,6 +4,6 @@ parameters:
services:
app.inquiry_repository:
class: AppBundle\Entity\InquiryRepository
- factory: [@doctrine.orm.entity_manager, getRepository]
+ factory: ['@doctrine.orm.entity_manager', getRepository]
arguments:
- AppBundle\Entity\Inquiry
コマンド処理前のクラスファイルは、先頭に~が付いたファイル名で…
とありますが、手許の環境では末尾に~が付きました。
$ php app/console doctrine:generate:entities AppBundle:Inquiry
Generating entity "AppBundle\Entity\Inquiry"
> backing up Inquiry.php to Inquiry.php~
> generating AppBundle\Entity\Inquiry
DBに4件登録状態で、API結果が下記のように表示されます。
{"0":{},"1":{},"2":{},"3":{}}
件数は合っているのに、中身が空、という現象が発生しました。
P199のコマンド実行では正しくデータ取得出来ています。
このような場合、どこが原因か思い当たりますでしょうか?
■動作環境
php:5.5.31
p.167の図6-6「管理者用画面のお問い合わせ編集画面」でボタン「保存」を押すと次のエラーがでます。
Expected argument of type "null or string", "integer" given
解決策が解らず、学習が止まっています。助けてください。
Symfony 3.3.13
PHP 7.2.12
MacOS 10.14
ページ:30
コンソールコマンドphp app/console
を実行すると、Could not open input file: app/console
と表示され実行されません。参考書296ページの開発環境は、行っておりません。その影響でしょうか?
indexAction()
の中のコードが以下のようになっています。
$inquiryList = $inquiryRepository->findAll([], ['id' => 'DESC']);
しかし、本来の意図としては、以下のようにfindBy()
ではないかと思います。
$inquiryList = $inquiryRepository->findBy([], ['id' => 'DESC']);
文中の解説には、
すべてのエンティティを降順で取得…
とありますので。
ただし、P.156の図6-4は、降順にはなっていません。それを正しいとすれば、
$inquiryList = $inquiryRepository->findAll();
でしょうか。
スクリーンショットで
●お問い合わせ種別: 0
となっていますが、P.117のリスト4-21では
●お問い合わせ種別: {% if data.type == 0 %}公演について
{% else %}その他
{% endif %}
となっているため整合していません。
p160ではバリデーショングループadminを設定後に、一般ユーザーのお問い合わせ画面から送信すると、「問題なく動作するはずです」とありますが、
p157~158にてカラム(process_status,process_memo)追加時に当該カラムがnull許可の設定になっていないため、未入力の場合insertに失敗します。
なお、当該カラムをnull許可にした場合は、正常に動作しました。
参考)エラーメッセージ
An exception occurred while executing 'INSERT INTO inquiry (process_status, process_memo, name, email, tel, type, content) VALUES (?, ?, ?, ?, ?, ?, ?)' with params [null, null, "\u3063\u3063d", "[email protected]", null, 0, "ssss"]:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'process_status' cannot be null
環境情報
Symfony 2.7.8
とありますが、No route found for "GET /blog/"
になりました。
$ symfony new classic-symfony2.7
となっていますが、スペースが抜けてしまってます。
$ symfony new classic-symfony 2.7
「Windowsの場合」も同様です。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.