トップページphp
1001コメント368KB

Zend Framework Part4

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/02/09(火) 22:21:24ID:???
公式
http://framework.zend.com/

マニュアル
http://framework.zend.com/manual/ja/

翻訳状況
http://mikaelkael.dyndns.org/checker/language/details/lang/ja
http://framework.zend.com/wiki/display/ZFDEV/Japanese+(Nihongo)

バグ報告
http://framework.zend.com/issues/secure/Dashboard.jspa

API
http://framework.zend.com/apidoc/core/

前のスレッド Zend Framework Part3
http://pc11.2ch.net/test/read.cgi/php/1239320100/
0042nobodyさん2010/02/15(月) 14:20:38ID:???
ドキュメントに書いていないことなんだよな。
で、他人の妄想を聞いてどうすんの?
0043nobodyさん2010/02/15(月) 15:04:28ID:???
妄想とか聞く気はないんですが、どこかに書いてあって見つけきれないだけかと思い
聞いてみました。
明確に書いてあることなのでそれなりの理由があると思ったんですがなにかおかしなこと聞いていますか?
0044nobodyさん2010/02/15(月) 15:11:15ID:???
コーディング規約があるプロジェクトに参加したことないのか
複数人で開発するときは、書き方が混ざったら読みづらくなるから
全員同じ書き方にあわせる
ただそれだけの話だ
0045nobodyさん2010/02/15(月) 15:14:02ID:???
>>44
このあたりとか、"タブ スペース"あたりでググるとそれ関連のがわんさかと。
http://blog.livedoor.jp/dankogai/archives/50475459.html

>>26じゃないけど、このスレは基本突っかかってくるからあんまり気にしない方がいいよ。
利用者がひねくれたフレームワークなのかもしれない。
0046452010/02/15(月) 15:15:26ID:???
>>45>>43宛で
0047nobodyさん2010/02/15(月) 15:15:47ID:???
>>43
PEARについて書いてあるけどたぶん理由は同じなので。
ttp://www.phppro.jp/phpmanual/pear/faq.tabs-vs-spaces.html

ZendはPEARの規約を引き継いだんだと思うけど
0048nobodyさん2010/02/15(月) 15:52:24ID:???
diffとったときに、スペースがタブになってると萎える
かといって、PHPの場合、テンプレ兼ねてるからタブだけガン無視も無理だし
0049nobodyさん2010/02/16(火) 03:49:53ID:iRRBilsA
一つの同じコントローラ中に
・queryAction
・finishAction
の二つのアクションがあります。

queryActionではデータベースへのquery登録処理(insert)がされていて、
それが成功したら
$this->_forward('finish'); と、finishAction(完了画面)に遷移させています。

が、遷移後の画面で画面をリロードすると、再度クエリしようとしてしまいます。
どうしたらいいでしょうか?
リロードしても何も起こらないようにしたいのですが。。
0050nobodyさん2010/02/16(火) 03:59:11ID:???
>>49
処理終了後はforwardじゃなくてredirect
0051nobodyさん2010/02/16(火) 05:19:42ID:???
>>49
PRG (POST-REDIRECT-GET) パターンが一般的かなぁ
他にはpostにチケットを入れといて、リロード時や2度押しを判別
0052nobodyさん2010/02/16(火) 12:16:10ID:???
フィルターを一部のコントローラーだけでなく、全体に適用したいのですが
それ用の処理関数はありますか?
0053nobodyさん2010/02/16(火) 15:12:42ID:iRRBilsA
現在zend_mailをつかってて、メール送信できないトラブルにはまっています。
それで、sendmailの設定などしていたらpostfixに切り替えたい気持ちになってきました。

zend_mailはpostfixに対応してるんでしょうか?
php.iniのsendmail_pathをpostfixのに変更すればいいのでしょうか?

linuxのメールソフトに関してはsendmailよりもpostfixやqmailのほうがメジャーだという
傾向のようなのに、マニュアルやzFW徹底入門などを見ると、ソフトの切り替えに関して
書いていないので困っています。

zendMailを利用されている方、標準のsendmailのままで使ってるんでしょうか?
ご意見もらえると嬉しいです。



>>50-51
ありがとうございます。たすかりました!
0054nobodyさん2010/02/16(火) 15:16:45ID:???
MTAなんて何使っても同じ
トヨタ車でもホンダ車でも目的地に着けるのと同じ
0055nobodyさん2010/02/16(火) 16:05:59ID:???
>>53
スレチだよ
0056nobodyさん2010/02/16(火) 18:42:14ID:???
>>54-55
ありがとうございました。
zendFWにかかわるのでスレチじゃないかと思ってましたが、すみません
0057nobodyさん2010/02/16(火) 19:04:48ID:???
別にいいよ。すみませんはいらない。
1. sendmailからpostfixへの切替方法
2. phpでsendmailではなくsmtpでメール送信する方法

それぞれどこに聞くといいかちょっと考えてみて

Zend_Controllerをいじっててトイレに行きたくなったんだけどトイレはどこ?
そのレベル
0058nobodyさん2010/02/16(火) 19:08:26ID:???
メール出来る様に設定すればいいだけだしな。
メール出来るならZFでも問題なく使える。
ZFからスパムメール送るなら規制されて当然w
0059nobodyさん2010/02/17(水) 02:08:15ID:QzZxEOBR
相談です。リダイレクト処理がうまくいきません

hogeController/indexAction/
hogeController/aaaAction/
hogeController/bbbAction/
という構造のコントローラがあります。
この中のaaaActionで
$this->_redirect('/hoge/bbb'); としてbbbアクションにリダイレクトさせてるんですが
どういうわけかbbbへのリダイレクトの結果indexActionの処理が実行されています
(アクションの中身は以下のとおりです。)
public function indexAction(){
 echo "indexAction";
}
public function aaaAction(){
 //ここの処理に成功したら以下のリダイレクト
 $this->_redirect('/hoge/bbb');
}
public function bbbAction(){
 echo "bbbAction";
}

ブラウザのURLを見ると localhost/hoge/bbb となっているのに
ブラウザの画面では 「bbbAction」ではなく「indexAction」 とindexActionの結果が出力されるのです。
どんな原因が考えられるでしょうか?
0060sage2010/02/17(水) 02:31:41ID:???
>208
returnを使ってください。
redirectだけではなくforwardも同様ですよ。

public function aaaAction(){
 //ここの処理に成功したら以下のリダイレクト
 return $this->_redirect('/hoge/bbb');
}

ちょうど素通りしましたのでご参考になれば。
0061nobodyさん2010/02/17(水) 03:38:19ID:???
>>60
こんな時間にありがとうございます
でも、そのreturnを冒頭に加える処理をしても結果は同じでした
そもそもなんでindexActionに転送するのか、
bbbActionの中に限らずredirect処理を実行してる場所なんて
どこにもないので困っています。
どんな原因が考えられるでしょうか?
0062612010/02/17(水) 10:06:25ID:???
自己解決しました
原因はredirectの動作には関係ありませんでした
routingでbbbアクション用のルート設定をしてなかったのが原因でした
indexが出力されるのは/hoge/bbbのbbbをパラメータと判定されてたからでした
お騒がせしてすみません、ありがとうございました
0063nobodyさん2010/02/18(木) 15:20:23ID:???
Manual英語の部分まだまだ沢山あるね
0064nobodyさん2010/02/18(木) 15:46:08ID:???
個人的にはPEARのマニュアルのいい所をZFには導入して欲しいと思う
0065nobodyさん2010/02/18(木) 16:34:46ID:???
http://www.live-commerce.com/
0066nobodyさん2010/02/19(金) 10:25:20ID:???
Zend_Cacheにgetってメソッドがあったようですが、コレはどうなったのでしょうか?
ZF徹底入門(バージョンは1.5のようです)のP455の一番下に書かれていたのですが、後ろのリファレンス集には書かれていません・・・
昔のマニュアルなどには$cache->get()みたいに書かれて使われていたみたいなのですが、最近のマニュアルには書かれていませんし、APIにも出てきません
0067nobodyさん2010/02/19(金) 12:35:08ID:???
その本のことは知らんけど、昔から test load save だったと思うよ。
なんかの間違いでは
0068nobodyさん2010/02/19(金) 14:06:08ID:???
過去のソース見ればええねん
0069nobodyさん2010/02/19(金) 14:28:05ID:vk4cE2Qg
>>66
Zenf_Registryと勘違いしてないか?
0070nobodyさん2010/02/19(金) 14:31:26ID:???
>>67
自分も急にgetメソッドとか書かれて「?」って感じでその本をくまなく見てみましたがZend_Cache内では見当たらず、マニュアル、APIと探しましたがありませんでした
Web上では少なかったですが見つけましたが、推奨メソッドなのか良く分からなくて
もしかしたらどっかのバージョンで廃止になったかな、とも思いましたがバージョンアップ情報には書かれていませんでした
このサイト(http://itpro.nikkeibp.co.jp/article/COLUMN/20060810/245681/?ST=lin-server&P=3)にはgetが書かれていましたが、0.1.5という化石のようなバージョンで参考になりませんでした
0071nobodyさん2010/02/19(金) 14:34:05ID:???
>>69
えっ?
Zend_Cacheのページですし、Outputフロントエンドの項目の説明文中に書かれています
Zenf_Registryはこのコード、MVC内では使用されていないようです
getメソッドと書かれているくせに、サンプルコードにはいっさいgetは入っておりません
0072712010/02/19(金) 14:36:38ID:???
Zenfではなく、Zend_Registryです
0073nobodyさん2010/02/19(金) 16:12:47ID:g43faW/Y
ZF徹底入門のTypoってことで
次の方どうぞ
0074nobodyさん2010/02/20(土) 00:54:29ID:???
http://framework.zend.com/svn/framework/standard/tags/release-0.9.0/library/Zend/Cache/Core.php
> THIS METHOD IS DEPRECATED : USE LOAD() INSTEAD (same syntax) !
> it will be removed in ZF 1.1 !
なんで1.0じゃないの。。
0075nobodyさん2010/02/20(土) 10:04:46ID:???
>>74
他のことが忙しくて、 1.0 には間に合わないと contributor が思ったからじゃないの?
0076nobodyさん2010/02/21(日) 18:19:24ID:X8UnhclP
質問です。
zend_validator使ってるんですが、NotEmptyバリデータで警告文を設定しても
標準の警告が出てしまいます
$val_loginPass_empty = new Zend_Validate_NotEmpty();
$val_loginPass_empty->setMessage('パスワードが未入力です。', Zend_Validate_NotEmpty::IS_EMPTY);
if(!$chain_loginPass->isValid($params['loginPass'])){
 foreach($chain_loginPass->getMessages() as $errMsg) $errMsgAry[] = $errMsg;
}

こんな処理で該当フォームを未入力で送信したところ、
 # パスワードは6文字以上で入力してください。(文字数制限のバリデータもこの上で書いてます)
 # ?? is an empty string
 # パスワードが未入力です。
と出力されるのです。
ちなみにpost値をdumpすると ["loginPass"]=> string(0) "" となります。
何が原因でしょうか? ??は ' らしいですがそんなのどこにも入れてないんですが…
他の箇所のNotEmptyでは設定した警告文以外でません。。
どなたかご意見よろしくお願いします。
0077nobodyさん2010/02/21(日) 19:14:38ID:???
>>76
インスタンスに関係性がない
0078nobodyさん2010/02/21(日) 20:42:22ID:???
>>76
コテハン付けてくれ
0079nobodyさん2010/02/21(日) 21:15:35ID:???
>>76
コテハンにすると質問に答えてもらいやすくなるよ。
0080nobodyさん2010/02/22(月) 11:06:23ID:???
Zend_Currencyを使うと、エラーが出るのですが、どう対処すればいいのでしょうか?
エラー内容は以下の通りです

Fatal error: Uncaught exception 'Zend_Currency_Exception' with message 'No region found within the locale 'ja'' in
C:\php\includes\Zend\Currency.php:277 Stack trace: #0 C:\php\includes\Zend\Currency.php(333): Zend_Currency->_checkParams(NULL,
'ja') #1 C:\php\includes\Zend\Currency.php(518): Zend_Currency->getShortName(NULL, 'ja') #2 C:\php\includes\Zend\Currency.php(99):
Zend_Currency->setLocale(NULL) #3 C:\Apache2.2\htdocs\Zend\currency\toCurrency.php(4): Zend_Currency->__construct() #4 {main}
thrown in C:\php\includes\Zend\Currency.php on line 277

自分には良く分かりませんでした
0081802010/02/22(月) 11:08:15ID:???
すみません、ZFのバージョンは1.9.6だったと思います
PHPは5.2.12です
0082802010/02/22(月) 11:25:50ID:???
連投すみません
今、バージョンによって駄目なのかと思い、最新版の1.10.1にしたのですが、今度も

Fatal error: Uncaught exception 'Zend_Currency_Exception' with message 'No region found within the locale 'ja'' in
C:\php\includes\Zend\Currency.php:548 Stack trace: #0 C:\php\includes\Zend\Currency.php(101): Zend_Currency->setLocale(NULL) #1
C:\Apache2.2\htdocs\Zend\currency\setFormat.php(4): Zend_Currency->__construct() #2 {main} thrown in
C:\php\includes\Zend\Currency.php on line 548


のようなエラーが出ました(ライン数は大きく変わっていますが)
Zend_Localeが影響してエラーが出るとか何かで読んだ気がするのですが、Zend_Translate、Zend_Date、Zend_Measureなどは普通に動作しておりました
0083nobodyさん2010/02/22(月) 12:20:57ID:???
今はjaにしてる?言語ならjaでいいけど、地域がわからないと通貨がわからないからね
ja_JPにしてみたらどう?
0084802010/02/22(月) 14:39:46ID:???
>>83
ありがとうございました
ja_JPにしたら出来ました
ご迷惑おかけしました
0085nobodyさん2010/02/22(月) 19:06:49ID:???
覚えることいっぱいあるなぁ
もう疲れたよ
0086nobodyさん2010/02/22(月) 20:11:47ID:???
いちいち覚えてないよ
必要になったら調べるだけ
0087nobodyさん2010/02/22(月) 20:29:21ID:???
確かに、ZFは他のFWと比べても色々と大変だよな
今コンポーネントっていくつあるんだっけ?
70あるかないかってとこかな?
0088haruna2010/02/23(火) 14:59:27ID:p7GWr9xn
ZendFramework徹底マスター(ソーテック社)のサンプルをダウンロードし、Apacheのhtdocs内に入れたのですがサーバが見つかりませんとなり、動作しません。
例えば、C:\Apache2.2\htdocs\ZF2\Chapter02-02内のHogeControllerのpiyoActionにアクセスしたいので、http://localhost/ZF2/Chapter02-02/Hoge/piyoのように記述しましたがエラーが出ました。
本書にはhttp://localhost/Hoge/piyoでアクセスしていますが、コレで実行しても案の定駄目でした。
この場合、どのようにURI記述すればアクセスできるのでしょうか?
フォルダ構成は以下の通りです。

Chapter02-02 --- html--index.php
|
---application
|---models
|---views
|---controllers
|---HogeController.php
|---ErrorController.php
0089nobodyさん2010/02/23(火) 15:14:19ID:???
おれも初心者で詳しくないが、ZFダウンロードしてきて展開してinclude_path通してrewrite設定してる?
0090nobodyさん2010/02/23(火) 15:36:27ID:???
> サーバが見つかりません

URIの前にlocalhostにアクセスできてないでしょ
0091882010/02/24(水) 09:18:28ID:???
まさかのYahoo!地域回線ダウンで一日ネットに繋げませんでした・・・
>>89-90
設定はおかしくないはずなのですが・・・
この前にZendFramework徹底入門をやって、しっかりとZFは動作していましたし
PHP、Apache設定はずっと使っていて何の問題も無いので大丈夫だと思います
ZFはパスの書き方がちょっと癖があるのでChapter02-02の部分が悪いのかと思ってフォルダ名をtestとかに変えても駄目でした
徹底入門のサンプルと同じhtdocsに入れているのですが、どうして出来ないのかと思いまして
サンプルのコードを色々と見てみたのですが、悪そうな部分もなく、パスも大丈夫だと思ったのですが・・・

>>88は知人にメールを送って書き込んでもらったのでちょっと線がずれているようですので書き直します
Chapter02-02 --- html--index.php
          |
          ---application
             |---models
             |---views
             |---controllers
                 |---HogeController.php
                 |---ErrorController.php

((index.php))
<?php
require_once 'Zend/Controller/Front.php';
$front = Zend_Controller_Front::run('../application/controllers');

((HogeController.php))
<?php
require_once 'Zend/Controller/Action.php';
class HogeController extends Zend_Controller_Action
{
public function piyoAction()
{ }
}
0092892010/02/24(水) 09:51:56ID:???
つまりhtdocs直下にChapter02-02を入れたわけね
htdocsがDocumentRootなわけね
で、RewriteBase設定は /Chapter02-02/html/ になってると

ここまでの設定はおかしくないはずと・・
0093nobodyさん2010/02/24(水) 09:52:00ID:???
> 設定はおかしくないはずなのですが・・・

じゃぁ、設定は変えなくていいね。
0094nobodyさん2010/02/24(水) 09:52:51ID:???
0095nobodyさん2010/02/24(水) 09:56:00ID:???
そのパス通りなら、'../application/controllers'は違うよな
0096892010/02/24(水) 09:58:17ID:???
違うか>>88見るとC:\Apache2.2\htdocs\ZF2\Chapter02-02
だからRewriteBaseは /ZF2/Chapter02-02/html/ になるかな
0097nobodyさん2010/02/24(水) 10:39:30ID:???
友達に頼んで書き込んでもらうほど匿名掲示板に期待されても
0098882010/02/24(水) 12:00:03ID:???
>>97
本書のサポートページがなくて、また、質問は受け付けていないようなのです・・・

>>皆さん
ありがとうございました
解決いたしました
確かに、RewriteBaseのパスを間違えていたようでした
ほんとごめんなさい
0099nobodyさん2010/02/24(水) 23:57:57ID:siRy84kx
質問させてください。
コントローラの読み込みがうまくいかないのですが何が原因でしょうか?
エラーは以下です。
PHP Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)'
in /usr/lib/php/Zend/Controller/Dispatcher/Standard.php:241\nStack trace:\n
#0 /usr/lib/php/Zend/Controller/Front.php(936): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http),
Object(Zend_Controller_Response_Http))\n#1 /var/www/html/index.php(35): Zend_Controller_Front->dispatch()\n
#2 {main}\n thrown in /usr/lib/php/Zend/Controller/Dispatcher/Standard.php on line 241, referer省略

コントローラ名が単純でなく、命名規則に反してるのか、あるいはルーティングがおかしいのかと思ったのですが
自分ではわかりませんでした。すみません、ご意見お願いします。
■URLは
http://localhost/admin-spot/
■コントローラ(/var/www/application/Controllers/AdminSpotController.php)
<?php
require_once 'Zend/Controller/Action.php';
class AdminSpotController extends Zend_Controller_Action {
public function init(){ }
puglic function indexAction(){}//何も書いてません
}
■viewスクリプト(/var/www/application/smarty/templates/default/admin-spot/index.tpl)
 中身はhtmlタグだけでできていて、smartyタグは入ってません(エラーの要素ないかなと。。)
■ルーティング
routes.adminSpot.route= "/admin-spot/*"
routes.adminSpot.defaults.controller= "AdminSpot"
routes.adminSpot.defaults.action= "index"
routes.adminSpot.type = "Zend_Controller_Rou

長くなってしまいすみません、よろしくお願いします。
0100nobodyさん2010/02/25(木) 00:09:52ID:???
ErrorControllerをちゃんと設置するか
もしくは、
$front->throwExceptions(true);
して、エラーの原因を探ってみて
0101992010/02/25(木) 00:27:05ID:nHRZ8Mu+
>>100
すばやいレスありがとうございます。
ルーティングの設定やコントローラ名・ファイル名などはあれで問題ないのでしょうか?
フロントコントローラの一番下に
$front->throwExceptions(true);
と追記しましたが、画面は真っ白のまま、エラーログも同じ変わりありませんでした
0102nobodyさん2010/02/25(木) 00:40:49ID:???
フロントコントローラーの1番下ってどういう意味かわからないけど、
Zend_Applicationを使ってるなら、
設定ファイルで↓のように書く
frontcontroller.throwexceptions = 1

正しく動いてないなら、なんか間違ってる。
設定とかファイル名なんて、全部見ないとわからないよね。
0103992010/02/25(木) 01:08:47ID:???
>>102
zend_applicationは使ってません。
フロントコントローラは以下のようにしましたが、おかしいでしょうか? 本当にたびたびすみません

require_once 'Zend/Controller/Action.php';
$front = Zend_Controller_Front::getInstance();
//ルーティング
require_once 'Zend/Config/Ini.php';
$config = new Zend_Config_Ini('myRoutes.ini', 'myApp');
$router = $front->getRouter();
$router->addConfig($config, 'routes');

/* 以下デフォルト */
$front->setControllerDirectory(APP.'/controllers');
$view = new Zend_View_Smarty();
$render = new Zend_Controller_Action_Helper_ViewRenderer($view);
$render ->setViewBasePathSpec(APP.'/smarty')
->setViewScriptPathSpec(':module/:controller/:action.:suffix')
->setViewScriptPathNoControllerSpec(':action.:suffix')
->setViewSuffix('tpl');
Zend_Controller_Action_HelperBroker::addHelper($render);

$front->dispatch();
$front->throwExceptions(true);


$front->dispatch();と$front->throwExceptions(true);を入れ替えても同じエラーが出ています
0104nobodyさん2010/02/25(木) 01:22:05ID:???
$front->setParam('noErrorHandler');
をdispatchより上に

で、問題がsmartyなのかrouteなのか、標準に戻して切り分けてみたら?
0105nobodyさん2010/02/25(木) 08:19:42ID:???
ここで徹底入門のサポートを求められてもねえ。

http://pc11.2ch.net/test/read.cgi/php/1266229386/
【PHP】下らねぇ質問はID出して書き込みやがれ 93
http://pc11.2ch.net/test/read.cgi/php/1257701535/
△▲ WebProg 初心者の質問 Part21 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1167984858/
俺が初心者にPHPを伝授する
http://pc11.2ch.net/test/read.cgi/php/1169024172/
PHP相談室 1
http://pc11.2ch.net/test/read.cgi/php/1253912143/
【PHP】PHPフレームワーク総合スレ14
http://pc11.2ch.net/test/read.cgi/php/1158647441/
くだらない質問でもど偉そうに聞いていいスレ
http://pc11.2ch.net/test/read.cgi/php/1162858489/
【お題】PHP学習課題スレ【出せや】
http://pc11.2ch.net/test/read.cgi/php/1213919075/
PHP関連の書籍 第6版
http://pc11.2ch.net/test/read.cgi/php/1139746974/
中学生がPHPを習得するスレ
http://pc11.2ch.net/test/read.cgi/php/987560391/
初心的な質問なのですが・・・・
http://pc11.2ch.net/test/read.cgi/php/1131016915/ 【総合】 Webprog板質問雑談スレッド 1
http://pc11.2ch.net/test/read.cgi/php/1188135310/ こんにちは、PHPプロの方。教えてください。
http://pc11.2ch.net/test/read.cgi/php/1147830986/ 【PHP】Lvうpしたいので宿題ください
http://pc11.2ch.net/test/read.cgi/php/1168761226/ PHP上級者が集まるスレ
http://pc11.2ch.net/test/read.cgi/php/1062053369/ 【PHP】1が必死にPHPを勉強するスレ
http://pc11.2ch.net/test/read.cgi/php/996521284/ PHPを教えることになりました
http://pc11.2ch.net/test/read.cgi/php/1005203165/  PHP作成代行してくれるところ
0106nobodyさん2010/02/25(木) 14:55:31ID:???
ZendFrameworkwo使ってきて、基本的な事はおさえました
しかし、気がついたのですが、コントローラーとヴューは使用しているけれど、モデルってのを一度も使ってきませんでした
色んなサンプルでも上記の2つだけ利用して、モデルは空っぽでした
このmodelという機能は何に使うのでしょうか?
0107nobodyさん2010/02/25(木) 14:56:47ID:???
基本的なこと抑えられてないじゃねぇかw
0108nobodyさん2010/02/25(木) 15:02:04ID:???
なんか、うまいこと言えっていうネタだろ?
0109nobodyさん2010/02/25(木) 16:29:58ID:???
>>107-108
確かに(苦笑
表現が悪かったです
コンポーネントなどは理解したのですが、基本的な事をおさえたつもりでした・・・


すみません、マジで聞いております
このModelフォルダの中にはいったいどんなものを入れて使うのかが分かりません
ControllerとViewは分かったのですが、Modelの概念が見えてきませんでした
ビジネスロジック、処理とか書かれていますが自分には良く分かりませんでした
マニュアルや本などでもサンプルコードや説明に、特にModelの事が書かれていたような記憶も無くて・・・
0110nobodyさん2010/02/25(木) 16:32:38ID:???
>ヴュー
www
0111nobodyさん2010/02/25(木) 16:59:25ID:???
ビジネスロジックを検索すればいいじゃないか
0112nobodyさん2010/02/25(木) 17:46:33ID:???
>>109の言ってる事も分からなくはないな
俺の学習した本なんかもControllerとViewのコードしか書かれていなかったし、説明もほぼ皆無と言えるほど何も書かれていなかったし
マニュアルでもコンポーネントの学習がメインになるだろうから、サンプルにはModel部の事なんて書かれていないし
基本的にFrontControllerとActionControllerが重要視されて解説されてるし
ネットで「ZendFramework Model」なんかで上位部だけ調べてみたけど、あんま具体的なものはないね
0113nobodyさん2010/02/25(木) 17:47:41ID:???
ちょっと意味がわかんないんだけど

MVC知らんの?
0114nobodyさん2010/02/25(木) 18:17:10ID:???
例えるなら

アプリ全体=お前の人生
コントローラー=お前の思想
ウ゛ュー=お前の表現力
モデル=お前の脳みそ
0115nobodyさん2010/02/26(金) 01:26:22ID:???
馬鹿にはzendは無理。

php自体、mvcをきっちり分離出来ないからねえ。だから大規模サイト構築で問題有りまくり出し。
0116nobodyさん2010/02/26(金) 01:29:53ID:???
Multiselect
MultiCheckbox

Why Checkbox is upper?
I should lower it because its not beautiful.
0117nobodyさん2010/02/26(金) 01:48:46ID:???
>php自体、mvcをきっちり分離出来ないからねえ。
え?
0118nobodyさん2010/02/26(金) 08:27:54ID:bxfngNt4
Zend_DBのクエリがうまくいきません。原因を知りたいです。

$stt= $this->_dbConn->query("INSERT INTO `{$tableCopy}`(uId,loginId,name1) VALUE('10000','hoge','taro')");
という処理をやっていますが、目当てのテーブルにデータがINSERTできません。
_dbConnなどDB接続のオブジェクトなどの要素がそろっているのは確認できていて、
ターミナルやmysqlAdminのmysqlのコマンドから直接同じSQL文を実行すればinsertできます。

var_dump($stt)すると、以下のエラーが出ますが、どういうことでしょうか?
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '10000' for key 1
既存データに該当カラムが10000のデータがあるという意味かと思いましたがそんなデータはありませんでした。
また、問題の(?)カラムは主キーです。
同じクエリなのに、zend(php)からだけ実行できないのが理解できません。何が原因なんでしょうか?

つづく
01191182010/02/26(金) 08:29:04ID:bxfngNt4
つづき

ちなみに、処理全体の流れはトランザクションを利用していて以下のような処理になっています。
参考になるかわかりませんが良ければご確認ください。
(「今回の処理」部分がinsert失敗してもその下のUPDATE文は問題なく実行されます。)

try{
 //トランザクション開始
 $this->_dbConn->beginTransaction();
 $chkRs= $this->_dbConn->query("SELECT * `{$table}` WHERE --");//where以下省略

 if(!$chkRs){
  return "false_nodata";
 }else{
  //↓ここが今回の処理
  $stt= $this->_dbConn->query("INSERT INTO `{$tableCopy}`(uId,loginId,name1)
      VALUE('{$chkRs['uId']}','{$chkRs['loginId']}','{$chkRs['name1']}')");
 
  $this->_dbConn->query("UPDATE {$table} SET `role` = ? WHERE `preLoginPass`=? LIMIT 1", array($member,$tmpPass));
  return "success";
 }
}catch (Zend_Db_Statement_Exception $e){
 $this->_dbConn->rollBack();
 print($e->getMessage());
}catch (Exception $e){
 print($e->getMessage());
}

0120nobodyさん2010/02/26(金) 08:42:03ID:???
VALUESじゃねの?
エラーはちゃんとintegerにしろって書いてあるようにみえるけど。
0121nobodyさん2010/02/26(金) 08:50:35ID:???
このスレってさ、5人くらいしか居ないんじゃねぇの?
なんか文章の書き方が同じように思える
少々ガラの悪いのが数人って感じ?
0122nobodyさん2010/02/26(金) 09:32:08ID:???
>>120
>>118
主キーに同じIDを使ってinsertはできないというエラー

バックアップかdirty更新をやりたいんだろうけど、
同じスキームにしないでコピー先に専用の主キーを振る方がよくね。
てか、重そうだなその処理。バックアップならSQLひとつでいけそうだけど。
あぁ、まぁ書いてるときりがないからこの辺でw
0123nobodyさん2010/02/26(金) 10:01:08ID:???
で、自己解決しましたとか言って、なんか関係ない話を理由にするんだよな
どうみても釣りw
0124nobodyさん2010/02/26(金) 10:33:04ID:???
解決する人は何故か解決した方法は書かない
01251182010/02/26(金) 16:21:38ID:???
答えてくれた皆さんありがとうございます。
いただいたアドバイスを元に突き詰めてるんですが、原因がまだわかりません。
SQLが異常な動作をしてるみたいなので今はそっちの確認をしてますが
解決しなかったらまたこちらで相談させてください。
ほんとにすみません。
ありがとうございました。
0126nobodyさん2010/02/26(金) 17:07:57ID:???
どうもここのスレの住人はすぐに釣りだとか決め付けたがるな
0127nobodyさん2010/02/26(金) 17:25:08ID:???
スレの住人じゃなくてオレな
01281252010/02/26(金) 17:34:46ID:???
解決しました!
皆さんすみません、よく見たら最後のクエリ処理の後でトランザクションをcommit()してませんでした
最後のクエリのテーブルがMyISAMだからこいつだけ実行されてたんでした。
ありがとうございました。お騒がせしました。
0129nobodyさん2010/02/26(金) 18:11:16ID:???
>>127
お前かw
一番上の辺りの、即効釣りとか決め付けてるのもお前か?
結構頻繁に出てくるよなw
0130nobodyさん2010/02/26(金) 18:16:43ID:???
>>129

そう>>4 もオレ
配列のechoがわからない奴がZend_Filter_Inputのエラーメッセージを
設定するとかありえないww

0131nobodyさん2010/02/26(金) 18:18:06ID:???
>>128
MySQLならautocommitじゃね

0132nobodyさん2010/02/26(金) 19:25:12ID:???
教えてください。以下のようにZend_Viewのみを使って表示させるだけの
シンプルなものなんですが、$view->strに日本語を代入するとまったく表示
されずに、$view->str = '<b>foo</b>';だと「<b>foo</b>」と表示できます。
これはマルチバイト表示用の設定とかあるんでしょうか?
因みに、sjisとeuc-jpだと表示されずにutf-8だと表示されます。

---- index.php
require_once 'Zend/View.php';

$view = new Zend_View();
$view->str = '<b>マルチバイト</b>';
$view->setScriptPath('.');
echo $view->render('view.phtml');

---- view.phtml
<html>
<body>
<p><?php echo $this->escape($this->str);?></p>
</body>
</html>
0133nobodyさん2010/02/26(金) 19:53:53ID:???
なんか恨みでもあるのか
01341322010/02/26(金) 21:41:26ID:???
自己解決しました。
0135nobodyさん2010/02/26(金) 21:52:25ID:???
どうやって?
0136nobodyさん2010/02/27(土) 15:37:06ID:???
この流れにワラタw
0137nobodyさん2010/02/27(土) 16:57:04ID:???
がんばって。
0138nobodyさん2010/03/04(木) 20:52:09ID:iGtVy898
Zend_DBで、insertメソッドでもupdateメソッドでもqueryメソッドでも良いんですが、
値が入っていないパラメータを送るとき、自動的にカラであることをチェックして
自動的にNULLを入れて送信することって無理なの?

$hoge= $params['hoge'] != "" ? $params['hoge'] : NULL;
$db->update('book', array('hoge'=>$hoge),$db->quoteInto('aaa=?' ,$aaa));
みたいなことをいちいちやってるんだけど、効率悪いと言うか。
なにか上手いやり方ないですか?

0139nobodyさん2010/03/04(木) 21:30:33ID:???
Zend_Db_Tableを使うとか
0140nobodyさん2010/03/04(木) 23:39:32ID:???
何か面倒な仕様だな。コボル廚か?
0141nobodyさん2010/03/05(金) 10:23:06ID:???
やっと2chに繋がったか・・・
■ このスレッドは過去ログ倉庫に格納されています