0

これは、javascript/ajax への私の最初の本格的な進出です。

概要: それぞれが異なる行にある複数のレコードを一覧表示するインデックス ページがあります。レコードごとに、symfony フォームを含む小さな JavaScript ウィンドウを開くリンクがあります。ポップアップJavaScriptに各レコードのオブジェクトIDを渡す方法がわからないことを除いて、すべてうまくいきます。ここに私が持っているものがあります:

アクションから始めます:

public function executeTrackReferrals(sfWebRequest $request){
       $userId = $this->getUser()->getId();       
       $this->pager = new sfDoctrinePager('referral', sfConfig::get('app_pager'));
       $this->pager->setQuery(Doctrine_Core::getTable('Referral_submissions')->getUsersSubmissions($userId));
       $this->pager->setPage($request->getParameter('page', 1));
       $this->pager->init();}

メイン インデックス ページ:

<?php 
    include_partial('<a bunch of other includes >');
    include_partial('referral/rtsIndex', array('pager' => $pager));  
?>

_rtsIndex 部分:

<table>
<?php foreach ($pager->getResults() as $r => $referral): ?>
<?php 
    $referralObject = Doctrine_Core::getTable('referral')->getReferralObjectById($referral->getId()); 
    $submissionObject = Doctrine_Core::getTable('referral_submissions')->getObjectByReferralId($referralObject->getId()); 
?> 
<TR VALIGN=TOP> 
            <td WIDTH=10% ALIGN="center" class="_7">
            <P ALIGN=CENTER>
                <script type='text/javascript'>
                    $('.popup_changestatus').click(function(){
                    // put the row id into the hidden field in the popup
                      var rowId = $(this).parent().find('span.row_id').html();
                      $('test').val(rowId);
                    fg_popup_form("fg_formContainer","fg_form_InnerContainer","fg_backgroundpopup");
                    return false;
                    });
                </script>

                <a href="#" class="popup_changestatus">
                    <?php echo utilities::getStatusCode($submissionObject->getCandidateStatus()); ?>
                </a>
                <span class="row_id" style="display: none">
                    <?php echo $referral->getId() ?>
                </span>

            </P>
        </td>
</TR>
</table>

上記の Javascript ポップアップ フォーム コードには、次の行が含まれています。

<?php  include_partial('referral/changeStatusCodeForm'); ?>

上記の行は、実際の symfony フォームをレンダリングします:

_changeStatusCodeForm 部分:

<?php
$object = new referral_submissionsForm(<this is where I need to pass an ID for each popup form>);
echo $object;
?>

誰かが私を正しい方向に導くことができますか?

実際の JavaScript コードに興味がある場合は、かなり気の利いたオープン ソースのポップアップです: http://www.html-form-guide.com/contact-form/simple-modal-popup-contact-form.html

編集: contactform-code.php の内容は次のとおりです。

<script type='text/javascript' src='/project/misc/simple-popup-form-1/scripts/gen_validatorv31.js'></script>
<script type='text/javascript' src='/project/misc/simple-popup-form-1/scripts/fg_ajax.js'></script>
<script type='text/javascript' src='/project/misc/simple-popup-form-1/scripts/fg_moveable_popup.js'></script>
<script type='text/javascript' src='/project/misc/simple-popup-form-1/scripts/fg_form_submitter.js'></script>
<div id='fg_formContainer'>
    <div id="fg_container_header">
        <div id="fg_box_Title">Change Status</div>
        <div id="fg_box_Close"><a href="javascript:fg_hideform('fg_formContainer','fg_backgroundpopup');">Close(X)</a></div>
    </div>

    <div id="fg_form_InnerContainer">
    <form id='contactus' action='javascript:fg_submit_form()' method='post' accept-charset='UTF-8'>

    <input type='hidden' name='submitted' id='submitted' value='1'/>
    <input type='hidden' name='<?php echo $formproc->GetFormIDInputName(); ?>' value='<?php echo $formproc->GetFormIDInputValue(); ?>'/>
    <input type='text'  class='spmhidip' name='<?php echo $formproc->GetSpamTrapInputName(); ?>' />
    <div class='short_explanation'>* required fields</div>
    <div id='fg_server_errors' class='error'></div>
    <div class='container'>

        <?php 
//        $form = new referral_submissionsForm();
          include_partial('referral/changeStatusCodeForm'); 
        ?>
</form>
</div>
</div>
4

1 に答える 1

0

まず、モデルに直接使用Doctrine_Coreしないでください。ここでの最善の方法はleftJoin、クエリをページャーに渡すときに 2 つのテーブルを作成することです。次に、テンプレートでリレーションを取得するだけです ( など$object->getRelation())。

問題に関して<div id='fg_formContainer'>は、ポップアップのコンテンツであるため、ビルド時に ID を渡す必要があります。パーツは次のファイルから取得されます: contactform-code.php.

これをどこで構築するかdivを示してくださいid

編集:

さて、私はついにあなたの問題を理解しました。各行からクリックするたびに呼び出すことができるポップアップ定義がページに 1 つあります。行IDをグローバルポップアップに渡す方法を知りたいです。

これは、javascript で実行できます。それ以外の :

<a href='javascript:fg_popup_form("fg_formContainer","fg_form_InnerContainer","fg_backgroundpopup" );'>
  <?php echo utilities::getStatusCode($submissionObject->getCandidateStatus()); ?>
</a>

より適切に使用できます:

<a href="#" class="popup_contact">
  <?php echo utilities::getStatusCode($submissionObject->getCandidateStatus()); ?>
</a>
<!-- use this hidden span to put the row id, to be able to retrieve it using jQuery -->
<span class="row_id" style="display: none">
  <?php echo $referral->getId() ?>
</span>

次に、jQuery を使用してアクションを定義します (たとえば)。

$('.popup_contact').click(function() {
  // put the row id into the hidden field in the popup
  var rowId = $(this).parent().find('span.row_id').html();
  $('#submitted').val(rowId);

  fg_popup_form("fg_formContainer", "fg_form_InnerContainer", "fg_backgroundpopup");
  return false;
})
于 2012-07-13T07:33:41.897 に答える