PHPフレームワークのタグ生成関数の使い所とは?

このQ&Aのポイント
  • PHPフレームワークでタグ生成関数を使う場面とは?
  • codeigniterのタグ生成関数の使い方とメリット
  • タグ生成関数はVIEWで使用されることが多い
回答を見る
  • ベストアンサー

【PHP】フレームワーク タグ生成関数の使い所

PHPフレームワーク codeigniter を使用して 開発を行っています。 codeigniterには、 form_hidden() br() heading() 等の、タグを生成してくれる関数がたくさんあるのですが、 パラメーターを引数に入れなければならなかったり 出力結果が、br(2) → <br /> <br /> と 直接タグを打つのとそこまで手間があまり変わりません。 むしろ Dreamweaver上でプレビュー確認できなかったり ソースの色分けが上手く適応されなかったりの不便さを多く感じます。 このタグを生成してくれる系の関数は どこで使うものなのでしょうか? 動的に br の数が変わるとかそういう系の時に使う感じでしょうか? また、使うとしたら VIEWに書くものなのでしょうか?

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#158634
noname#158634
回答No.1

一つには、PHPスクリプトの中に直接HTMLタグを記述して出力させるのが美しくないから。 だから、あなたがそれに対し抵抗がなければ使わなくてもいい。 それから、 >パラメーターを引数に入れなければならなかったり といいますけど、タグの端から端まで全部書かずとも関数を呼べばタグを生成してくれるというのは非常に便利ですよ?だって、HTMLの文法は理解しなくていいんだから。 あと、極端な話、「br(100)」と「<br />…全部で100個…<br />」の「手間があまり変わ」らないと思いますか?コピペしたとしても関数のほうが何倍も楽だと思いませんか? たぶんDWを使っているからその感覚が理解できないんでしょう。ツールを使わない人にとっては十分役に立つ関数といえます。

yuzuru0024
質問者

お礼

回答ありがとうございます。 たしかに、br100個ならべるというのは単純な処理ですが brの数が状況によって数が変わるとかなったりしたときは 便利になってきそうですね。

関連するQ&A

  • PHPのstrcmp関数について

    PHPのstrcmp関数の動きがよくわかりません。 strcmp (PHP 4, PHP 5) strcmp — バイナリセーフな文字列比較 説明 int strcmp ( string $str1 , string $str2 ) この比較は大文字小文字を区別することに注意してください。 パラメータ str1 最初の文字列。 str2 次の文字列。 返り値 str1 が str2 よりも小さければ < 0 を、str1が str2よりも大きければ > 0 を、 等しければ 0 を返します。 ・・・・・・・・・とマニュアルには上記のようにあります。 聞きたい事!▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼ 1 このstr1がstr2より大きいとはどういうことでしょうか? 2 実際に動きを確認するためにstrcmp関数を他のPHPのビルトイン関数で実現できないのでしょうか? 私の想像では、この関数にあたえる二つの引数を10進数に変換して、値の大きさを比較するという方法なのですが・・。 たとえば <?php $str01 = "a"; $str02 = "b"; print strcmp($str01,$str02); print "<br />"; //上記の値は-1がでるためこの場合 $aのほうが$bより小さいことになる。 //$aの値の文字aが小さいとは?どういうことか //私の、ぱっと思いついた方法は、以下のような意味? $str01 = bin2hex($str01); print $str01 ; //16進数でaという値を表すと61がでる print "<br />"; $str01 = hexdec($str01); print $str01; //10進数でaという値を表すと97がでる print "<br />"; //上記を同じく$bに行うと $str02 = bin2hex($str02); print $str02 ; //16進数でaという値を表すと62がでる print "<br />"; $str02 = hexdec($str02); print $str02; //10進数でaという値を表すと98がでる print "<br />"; print "<hr />"; /* 結果、$aは$bより 【小さい】という事なのでstrcmpは-1を返したと・・・。 こういう事をかんがえてみました。 そしてこれは、普通に考えれば a => bという順序なので アルファベット順になります。 しかしこのやり方だと */ $str03 = "aaaaaaa"; $str04 = "bb"; //と上記のような文字列があった場合同じく同じ手順で値をだすと $str03 = bin2hex($str03); print $str03 ; //16進数でaという値を表すと61616161616161がでる print "<br />"; $str03 = hexdec($str03); print $str03; //10進数でaという値を表すと27410143614427489がでる print "<br />"; //上記を同じく$bに行うと $str04 = bin2hex($str04); print $str04 ; //16進数でaという値を表すと6262がでる print "<br />"; $str04 = hexdec($str04); print $str04; //10進数でaという値を表すと25186がでる print "<br />"; /*ただ上記の方法だと、$str03と$str04を比較すると$str04の【bb】という値の方が 小さくなり順序的には bb => aaaaaaとなりアルファベット順にするとこができない。 三つ目の質問 3 アルファベット順にソートしたいとき標準のsort関数を使わずに他のPHPの標準関数の組み合わせでアルファベット順に並び替える 関数はつくれないのか? どなたか、ご意見お聞かせください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • ビルダー 不要なタグの生成を止めたい

    Dreamweaverを使用してWEBサイトを作っています。 依頼人が更新作業をしているのですが 相手はホームページビルダーを使用しています。 CSSでいろいろ指示をしているテンプレートを作り、 テキスト部分を打ち変えるだけで更新できるようにしているのですが ビルダーでテキストを打つと不必要なタグがやたらと入ります。 たまにフォント指定がバラバラだったりして、明朝とゴシックが混じったような文章になってたりします。 これは相手の操作に問題があると思うのですが(^-^; ソース画面にして、テキスト部分に直接打ち込んで下さいとお願いしているのですが どうしても見やすさから、通常の作業場面(?)でテキストを打ってしまうようです。 「表示がおかしくなったから見てくれ」と頼まれ見ると すごい指定タグの量でびっくりします。 HTMLソースの自動整形やエラー修正のチェックを外したり、 その他いろいろ困る設定は外す事ができたのですが、 このフォントタグの細かな生成には参っています。 こんな感じです↓ <span lang=EN-US style='font-size:11.0pt;color:red'></span>○○テキスト部分○○<span lang=EN-US style='font-size:11.0pt;color:red'></span><BR> <span lang=EN-US style='font-size:11.0pt;color:red'></span>○○テキスト部分2○○<span lang=EN-US style='font-size:11.0pt;color:red'></span><BR> …不要な指示がなぜ入っているのでしょう?? また、文章が終わって何もない所に↓ <span lang=EN-US style='font-size:10.0pt'></span></p> <p class=MsoNormal><span style='font-size:10.0pt;font-family:"MS 明朝","serif"; mso-ascii-font-family:Century;mso-hansi-font-family:Century'></span></p> <span lang=EN-US style='font-size:10.0pt'></span><span lang=EN-US style='font-size:10.0pt'></span> …と、これがたくさん残っています。(なぜでしょう??) 改行タグの前の<SPAN lang=EN-US><o:p></o:p></SPAN>も困ります。 いろいろ書いてしまいましたが、設定でこれらのタグが入らないようにする方法はないでしょうか? また、相手の操作次第(ソース画面で直接打ち込む以外)でなおる方法はあるでしょうか? よろしくお願い致します。

  • Dateにnewを付与せず(関数として)呼び出した

    Dateにnewを付与せず(関数として)呼び出した場合、下記のようになるみたいですが、何故でしょうか? ・引数がない場合 → 現在の時間(UTC)を表す文字列を返す ・引数あり→引数を無視して、同上 ■質問1 ・この決まりは、「MDN」もしくは「msdn」リファレンスだとどこに記載されているでしょうか?(「ECMA」には記載されているのですが、リファレンス的にどういう位置付けになっているかを確認したいです) ・オブジェクトを生成せず呼び出せるからには、「Date();」関数がどこかに記載されていると思ったのですが、探したけど見つかりません ▽Global オブジェクト   http://msdn.microsoft.com/ja-jp/library/cc427717.aspx ■質問2 >Date オブジェクトに一切パラメータを渡さなかった場合は、オブジェクトは現在の時刻 (UTC) で初期化されます ▽Date オブジェクト   http://msdn.microsoft.com/ja-jp/library/cc427714.aspx ・と言うことは、Date オブジェクトを生成しなくても、「Date();」すると、結局、ここ(Date オブジェクト)に辿り着くのでしょうか? ・「Date();」関数は、どこにあるのでしょうか?(どこに所属してる? UTCが返ってくる理由を知りたい)

  • PHPで生成した値をデータベースに送る方法

    題名の通りです。入力画面上で自動生成させた値(今回はパスワード)を入力したテキストと一緒にデータベースへ送りたいと思ってますが行き詰りました。テキストは無事データベースへ送信されますがパスワードが送信されません。というか送信側の記述方法が分からず何も書いていないので当然ですがさっぱりです(;;)何卒、ご指導お願いします。(なお、プログラムの一部はネット上に公開していた物を使わせていただいております。) 【入力画面側 nyuryoku.php】 <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </HEAD> <BODY bgcolor="#FFFFFF" text="#000000"> <FORM name="form1" method="post" action="view.php"> <?php //----------------------// // パスワードを生成する // //----------------------// // パスワードの長さ設定 define(PASSWORD_LEN, 9); // 乱数表シードを決定 srand((double)microtime() * 12345678); // パスワード配列を作成 $pwelemstr = "abcdefghkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ2345679"; $pwelem = preg_split("//", $pwelemstr, 0, PREG_SPLIT_NO_EMPTY); // ランダムパスワードを生成⇒表示。 print makePassword(PASSWORD_LEN) . "\n"; // ランダムパスワードを生成する関数 function makePassword($length) { global $pwelem; $password = ""; for($i=0; $i<$length; $i++ ) { // パスワード文字列を生成 $password .= $pwelem[array_rand($pwelem, 1)]; } return $password; } ?> <BR><BR> BACK_PASS<BR> <INPUT type="text" name="back_pass"> <BR> FRONT_PASS<BR> <INPUT type="text" name="front_pass"> <BR><BR> <INPUT type="submit" value="送 信"> </FORM> </BODY> </HTML> 【送信側 view.php】 <HTML> <HEAD> <TITLE>view.php</TITLE> </HEAD> <BODY> <?php require_once("DB.php"); $dbUser = "USER"; // ユーザー名 $dbPass = "PASS"; // パスワード $dbHost = "LOCALHOST"; // ホスト名 $dbName = "DATABASE"; // データベース名 $dbType = "mysql"; // データベースの種類 $dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName"; // データベースに接続 $conn = DB::connect($dsn); // 接続に失敗したらメッセージを表示して終了。 if (DB::isError($conn)){ die($conn->getMessage()); } // POSTされたデータを受け取り、エスケープ。 $back_pass = addslashes($_POST['back_pass']); $front_pass = addslashes($_POST['front_pass']); $sql = <<<EOS INSERT INTO passkanri ( back_pass, front_pass ) VALUES ( '$back_pass', '$front_pass' ) EOS; if(preg_match("/Windows/", $_ENV["OS"])){ $sql = mb_convert_encoding( $sql, "SJIS", "EUC-JP"); } // SQL文を発行 $result = $conn->query($sql); if (DB::isError($result)) { die ($result->getMessage()); } $count = $conn->affectedRows(); print "データを" . $count . "件、挿入しました。"; // データベースから切断します。 $conn->disconnect(); ?> </BODY> </HTML>

    • ベストアンサー
    • MySQL
  • DreamweaverMXの改行について

    WindowsXPでDreamweaverMXを使用しています。 Dreamweaver自体の操作が良くわからなくて コードウィンドウに直接タグ書きをしているような 状態です。 2行、改行をしたい場合に<br><br>と入力すると IEでは、なぜか2行分改行されません。 一行だけ改行された状態になっています。 これが、オペラやDreamweaverのデザインビューだと きちんと2行分改行されているのですが・・・。 <br><br><br><br>と入力して ようやくIEで2行分改行されているような状態 です。 何か設定ミスや、間違って操作しているところが あるのでしょうか? よろしければ、ご指摘下さい。 よろしくお願いします。

  • Struts/JSTL 以外のタグライブラリ

    お世話になっております。 表題の件ですが、現在 SAStruts などを使用したWebアプリケーションを構築しております。 View には JSP を利用しており、タグライブラリとしては、SAStruts(Struts) のタグ、JSTL のタグを利用しております。 ただ、Struts のタグがあまり使いやすいとは思えないのです。 例えば index="true" が 2 次元配列で使えないなど。 お聞きしたいのは、これら以外に公開されているタグライブラリで、 JSTLのようにフレームワークに依存しない、かつ form/input 系を持っているものはあるのでしょうか? JSTL にも form や input 系のタグがあればよいのですが、、 もしご存知であればご教示お願いいたします。 以上、よろしくお願いいたします。

  • PHP内で作成したHiddenタグが、ソース表示で見えてしまう

    PHP内で作成したHiddenタグが、ソース表示で見えてしまう 熟練者・経験者の皆様にはお世話になっております。 よろしくお願いします。 現在、ログイン画面(html)⇒メニュー画面(php)⇒各画面(php) で構成されるサイトを作成しています。 ログイン画面ではIDとPASSWORD文字列を引数にJavaScriptの関数を実行し、POSTしています。 IDとPASSWORDはメニュー画面のPHP内で受け取り、 問い合わせをして正しければメニュー画面のhtmlを表示し、 正しくなければログインエラーのhtmlが表示されます。(ついでに社員番号やその他の値も取ってます) ですがメニュー画面から各画面へ遷移する際に、ログインIDや、 その他の情報をどうやって渡してやればよいのか判りません。 ログイン画面(html)からメニュー画面(php)へのPOSTと同じ用に メニュー画面もタグのValue(IDやPASSWORD)を引数に JavaScriptでSubmitすれば良いと考えました。 しかしその為にはまずPHTがログイン画面から受け取った値を、 HiddenタグでHtmlに渡してやる必要があります。 ですが、ブラウザで「ソースを表示」としてソースを見ますと、Hiddenタグが見えてしまうのです。 書いているソースは少々はしょりますがこんな感じのものです。 1.login.html <form action="menue.php" name="form_login" method="post"> 社員ID:<INPUT type="text" size="24" name="id_txtbox"> PassWord:<INPUT type="text" size="20" name="password_txtbox"> <IMG id="btnlogin" onclick="login(id_txtbox.value,password_txtbox.value); "name="btnlogin"> </form> 1.2. login.js function login(id,pass){ document.form_login.id_txtbox.value = id; document.form_login.password_txtbox.value = pass; document.form_login.submit(); } 2.menue.php <?php $user_id = $_POST['id_txtbox']; $user_pass = $_POST['password_txtbox'];  $hiddentag1 .= "<input type='hidden' id='hid_id' name='hid_id' value=" .$user_id. ">"; ?> <html> <body> <form action="edit.php" name="link_edit" method="post"> <?= $hiddentag1 ?> </form> </body> </html> menue.phpが表示された際に、右クリックメニューからソースの表示を選択し、 ソースを見ますと、hiddenタグが表示されてしまっています。 もしPASSWORDがmokoだったら、 <input type='hidden' id='hid_id' name='hid_PASS' value=moko> と見えてしまいます。 これではIDやパスワードをページ間で持ちまわる事は危なくて出来ません。 しかし、login.htmlからのアクセス以外(URL直打ち等)をはじく為には 全てのページで最初にIDとPASSWORDによる認証が必須とも考えています。 どうすれば「ソース表示」で見せずに、phpからhtmlに重要な値を渡し、 それを他のphpにPOSTする事が出来るでしょうか? PHP,POST等のキーワードで探しても、検索語句が悪いのか、なかなか解決方法を見つかれずにいます。 どうかご教授くださいませ。

    • ベストアンサー
    • PHP
  • パラメータとhtmlの再描写の関係について

    パラメータとhtmlの再描写の関係について 現在、jqueryを使って、getによるリクエストを送信し、コールバック関数でHTMLの再描写を行っているのですが、html()ではなく、replaceなどで一部書き換えると、サーバー側にパラメータが伝わらず困っております。 具体的には、 var url = BASE_URL + "?action=true&user_id="+user_id+"&view_day="+view_day+"&time="+noCache; のように変数view_day等をサーバー側に送るようにし(noCacheはダミー変数)、 そのコールバック関数で、 $("#contents").html(obj.data); とすると、htmlは書き換えられ、サーバー側(php)でも、目的のview_dayの値が取ることができ、うまくいきます。 しかし、 $( 'div#main div#info-container' ) . replaceWith( $('div#main div#info-container',$(obj.data)) ); のようにコールバック関数の引数(obj)を使って、一部を書き換えようとすると、 パラメータとしてview_dayには変化があっても、サーバー側ではその変化した値をとってくれません。 firebugなどではview_dayは3を送っていることが確認できても、html()を使ってhtmlを再描写しない限りは、3を受け取らず、その前に受け取った2のままになってしまったりして、思ったような動作をしてくれません。 僕としては、 firebugで確認しても、正しいパラメータが送られ、ちゃんとリクエストが発行されているのだから、サーバー側でその値は受け取れるはず と考えているのですが、この際にhtmlの描写は関係してくるのでしょうか? できれば、描写に関係なく、パラメータを送れば、そのパラメータがサーバー側で受け取れるようにしたいのですが、なかなかよい方法が見つからないので、ご教授いただけますと嬉しく思います。 よろしくお願い致します。

  • PHPでJavascriptの引数の扱い方

    はじめまして。宜しくお願い致します。 環境:Linux(Redhat 9), apache2, PHP4.3.6 [やりたいこと] 下記↓ソース内容↓より、input=button と input=text が幾つかある。 個々のボタンが押されたら、PHPにて"個々"の内部処理を行う。 内部処理終了後は、個々のテキストにインクリメントした値が画面表示される。 HTML+Javascript にて、カウンター部分は一応完成しています。 ↓ソース内容↓ <html> <head> <script language="JavaScript"> <!-- function ccc(obj0) { cnt = obj0.value; cnt++; obj0.value = cnt; } // --> </script> </head> <body> <form name="ose"> <input type="text" name="view0" readonly size=5 maxlength=3> <input type="button" value="押せ0" onClick="ccc(view0)"><br> <input type="text" name="view1" readonly size=5 maxlength=3> <input type="button" value="押せ1" onClick="ccc(view1)"> </form> </body> </html> コレをPHPに書き換えると、上手くいきません。 ↓PHPに書き換えた場合↓ <script type="text/javascript"> <!-- function ccc($obj0) { cnt = $obj0.value; cnt++; $obj0.value = cnt; } // --> </script> 引数に付いている "$"マークをJavascript側で認識しないのだろう、と考えています。 出来れば、PHPで単体の関数として使用したい為、模索中です。 ※現在は、別の関数の中に上記の『↓HTML+Javascriptの場合↓』を無理矢理入れて使用しています。(別の関数:HTMLをPHPファイルに書き込む) 別の関数内に入れてても問題は無しです。 但、上記のJavascriptを使用しないソース達にも書き込んでしまうので、ちょとやだなーと。 いい方法があったら教えて下さい。

    • ベストアンサー
    • PHP
  • phpで困ってます。

    phpでNotice: Undefined offset:のエラーが出て困っています。ご指導よろしくお願いします。 まず、name.txtの内容からチェックボックスを生成し、そのチェックボックスにチェックを入れて送信します。 <?php $name_file = "name.txt"; $name_log = array(); // ログファイルの読み込み if (file_exists($name_file)) { $name_log = file( $name_file ); } // ログの内容をHTMLに変換する $html = ""; $count = 0; //チェックボックスの生成 foreach ($name_log as $line) { $checkbox = '<label><input class="che" type="checkbox" name="n['.$count.']" value="'.$line.'"><img src="'.$line.'"></label></br>'; $html .= $checkbox; $count ++; } $html .= '<input type="hidden" name="count" value="'.$count.'">'; ?>   後略 次に受け取る側ですが,チェックが入っている情報をもとにimgタグを生成しようとしています。 <?php $html = ""; $max = $_POST['count']; //n[ ]に送信されきた内容を代入 for ($i = 0; $i < $max; $i++) { if($_POST['n'][$i] != ''){ $img_src = htmlspecialchars($_POST['n'][$i], ENT_QUOTES); $img = '<img src="'.$img_src.'">'; $html .= $img; } } $fhn = fopen("show_html.txt","w"); fwrite($fhn,$html); fclose($fhn); ?> 後略 if($_POST['n'][$i] != '')の部分で Notice: Undefined offset:0 .............. Notice: Undefined offset:1 .............. Notice: Undefined offset:2 .............. . . . . のエラーが出ます。

    • ベストアンサー
    • PHP

専門家に質問してみよう