كيفية تخزين صفيف في وحدة تحكم واستخدامها في عرض ملف في للكيك

StackOverflow https://stackoverflow.com/questions/1410423

  •  05-07-2019
  •  | 
  •  

سؤال

في تحكم المستخدمين بلدي، وأنا العثور على عدد من النماذج التي خلقت للمستخدم عن طريق الاستعلام عن جدول "أشكال" وتخزينها في صفيف. ولكن كيف لاستخدام المتغيرات مجموعة في ملف الرأي.

وعادة، وأود أن تعيين متغير في وحدة تحكم باستخدام وظيفة مجموعة واستخدامه في ملف عرض على هذا النحو. لكن كيفية تعيين صفيف في وحدة تحكم؟ أحصل على القيم في وحدة تحكم (لم صدى).

ورمز تحكم بلادي:

function users(){

   $this->set('users',$this->User->find('all'));
   $users=$this->User->find('all');
   foreach($users as $user):

     $id=$user['User']['id'];
     $userFormCount[$id]=$this->Form->find('count',array('conditions'=>array('Form.created_by'=>$user['User']['id'])));
     $userFormCount[$id]=$this->Form->find('count',array('conditions'=>array('Form.created_by'=>$user['User']['id'])));      
     echo "users : ".$id."  ".$userFormCount[$id];

   endforeach;
}

وملفي الشخصي:

<?php foreach($users as $user):?>

   <tr>
  <td class="people_profile">

         <a href="/users/angeline"><?php echo $user['User']['name'];?></a>
      </td>

     <td>
    <?php 
    $id=$user['User']['id'];
    echo $userFormCount[$id]." ";?>forms,   //need the array value here.
    0 reports,
    0 badges
  </td>
 </tr>
<?php endforeach;?>

وبما أنني قد قمت بتخزين قيمة في varaible $ userFormCount في وحدة تحكم، أنا لا أحصل على القيمة في عرض ملف. لكن كيفية تعيين والحصول على قيمة المصفوفة؟

هل كانت مفيدة؟

المحلول

وقبل كل شيء يجب تجنب تكرار المكالمات وظيفة الخاص بك.

ويمكن استبدال خطين الأول وظيفة عن طريق:

$users=$this->User->find('all');
$this->set('users', $users);

التالي يمكنك تغيير وجوه الخاص بك قبل أن يمررها لعرض وإضافة الخاصية التي تقوم بحساب وإلى هذا الكائن.

function users(){

    $users=$this->User->find('all');

    // notice the & here
    foreach($users as & $user):

       // you are repeating the same line here as well, that's not necessary
       $user['User']['custom_field'] = $this->Form->find('count', 
           array('conditions'=>array('Form.created_by'=>$user['User']['id'])));
    endforeach;

    $this->set('users', $users);
}

وبعد ذلك يمكنك استخدامه في وجهة نظركم مثل أي مجال آخر أن تحصل عليها من قاعدة البيانات. لتحسينه حتى firther قد ترغب في النظر في نقل هذا الرمز إلى رد afterFind في نموذج User الخاص بك، على الأقل إذا تم استخدام هذه القيم المخصصة أكثر من مرة واحدة.

نصائح أخرى

وكنت تعرف كيفية تعيين قيمة مجموعة: -)

في هذا الرمز أنك وضع مجموعة من المستخدمين ''

$this->set('users',$this->User->find('all'));

وهكذا يمكنك أن تفعل الشيء نفسه بالنسبة للمجموعة الأخرى:

$this->set('userFormCount',$userFormCount);

... وقراءتها بنفس الطريقة التي مستخدمين متغير.

ولكن يرجى النظر في الإجابة RaYell، لأن هذا ما يفسر كيفية جعل القانون الحالي بشكل أفضل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top