投稿

ラベル(Symfony)が付いた投稿を表示しています

Symfony2.3でOAuthを使ったTwitterの投稿

ふとツイッターのbotを作ってみたくなったので、やってみました。 ローカルでやっているので一定間隔で投稿するといったことはやっていませんが、ボタンを押すと何かをつぶやくことができるようになりました。 namespaceやrequireなどほとんどphpがわからない状態でやったので、もうだめかもしれないというくらいにハマったのですが、なんとか出来ました。 公式のドキュメントを読むのが大事だと思いました。 アプリを登録してAPI_key (consumer_key), API_secret , access_token , access_token_secretを入手したりする方法は メモ:twitterのbotを作るために必要なAPI key・token取得法 とかを見たください。検索すればいくらでも出てきます。 また、下記サイトからtwitteroauthというAPIをダウンロードしてください。右下の方にDownloadZipというボタンがあります。 https://github.com/abraham/twitteroauth Symfony2.1でTwitterOauthを使う 途中までは、このサイトを見ながらやりました。 ファイル展開のところにあるように、vendor/twitteroauth/lib/TwitterOauthにOauth.php とtwitteroauth.phpをコピーしてください。 また、ファイル名をtwitteroauth.phpからTwitterOauth.phpへ変更します。 次に、autoload.phpに require_once __DIR__.'/../vendor/twitteroauth/lib/TwitterOauth/TwitterOauth.php'; と追記します。 autoload.phpはvender/にあります。 Config.ymlは変更しませんでした。 このサイトを見るのはここまでです。 さて、コントローラにactionを追加するのですが、結論から言うと、最短2行でかけます。 $TwitterOAuth =  new \TwitterOAuth("API_key","API_secret",...

app/console doctrine:schema:createでのalready existsエラー

データベースを作成しようとするともうすでにそのテーブルがあると言われる。 mysqlの中をくまなく探してもそんなものは無い。 ちなみにエラー文 [Doctrine\DBAL\Schema\SchemaException]                         The table with name 'blogsymfony2.foodorder' already exists.  基本的に下のリンクの通りだったのだが、検索してみたら結構えげつないところに隠れていた。 おそらく最初の方に間違えて作ってしまったものだろう。引っかかったファイルを削除すると無事テーブルを作成できた。 Unable to create table in MySQL using Doctrine and Symfony2 これを期にfindコマンドも覚えた $find /探すディレクトリ -name ファイル名(もちろんワイルドカード使用可)

PHPフレームワークSymfony2 開発チュートリアルをSymfony2.3.9でやった時に引っかかるところ

バージョンによる違いや、ミスと思われるところがいくつかあったので書いておきます。 PHPフレームワークSymfony2 開発チュートリアル 1.5セッションの導入 bindRequestとなっているところをbindに変える いくつかあります。 1.5.1オブジェクトの登録 productActionと、productPostActionについてのみコードが書かれていて、 adressActionとadressPostActionについては、「同様の変更」とだけ書かれていて、具体的なコードが乗っていません。 しかし、product_idとquantityをただname,adress,phoneに変えただけでは一つ目のページのsessionが2つ目のsessionに上書きされてしまいます。 そこで、 $this->container->get('session')->set('drinkOrder',new drinkOrder()); をsetではなく、 $this->container->get('session')->get('drinkOrder'); にする必要があります。 Resources/views/DrinkOrder/confirmation.html.twig の最後の行に <form action="{{ path('OscDrinkOrderBundle_product') }}" method="post" {{ form_enctype(form) }}> とありますが、正しくは <form action="{{ path('OscDrinkOrderBundle_confirmation') }}" method="post" {{ form_enctype(form) }}> でしょう。 use Symfony\Component\Form\FormBuilder; となっているところは、 use Symfony\Component\Form\For...

SymfonyブログチュートリアルをSymfony2.3でやった時に引っかかるところ

他にも同じようなことを書いている場所もありましたが、全てを網羅しているところがなかったので、僕も書いておきます。 blogチュートリアル(8) データのバリデーション [Semantical Error] The annotation "@Symfony\Component\Validator\Constraints\MaxLength" in property My\BlogBundle\Entity\Post::$title does not exist, or could not be auto-loaded. @Assert\MaxLength(50) @Assert\MinLength(10)となっているところは書き方が変わっていて、 @Assert\Length(max = "50") @Assert\Length(min = "10") とする。 カスタマイズ編(3) フラッシュメッセージの表示 FatalErrorException : Error: Call to undefined method Symfony\Component\HttpFoundation\Session\Session::setFlash() $this->get('session')->setFlash('my_blog', '記事を追加しました'); を $this->get('session')->getFlashBag()->set('my_blog', '記事を追加しました'); に変更 また、 Method "hasFlash" for object "Symfony\Component\HttpFoundation\Session\Session" does not exist in MyBlogBundle:Default:index.html.twig at line 3 には、 {% if app.session.hasFlash('my_blog')...