Intereting Posts

Foreach loop (или, может быть, может быть?) – хотите вернуть только одну запись в зависимости от страницы

Решено это с отредактированным кодом ниже. Спасибо всем, кто помог!

У меня две записи в моем db. Каждая запись имеет 6 полей (challengeId, partnerName, code, challengeTitle, description, image_url). Я выбираю имя partnerName из моего родительского представления страницы, чтобы перейти к моему представлению дочерней страницы.

Я использовал цикл foreach и имел проблемы. Теперь я вынул свой цикл foreach и заменил его на <?php $challengename = $this->challengenames[$k] = current($this->challengenames); ?> <?php $challengename = $this->challengenames[$k] = current($this->challengenames); ?> но теперь не может получить дочернюю страницу для отображения значений для challengeTitle, которые соответствуют «partnerName», которые я выбрал на моей родительской странице. Он всегда предоставляет значение параметра Title для первой записи вместо текущей записи. Мне нужно знать, как сделать changeTitle значение изменения в зависимости от того, какое имя партнера я выбрал на моей родительской странице.

Будет ли это делать цикл while или if в контроллере дочерней страницы, исправить это?

Любые советы (и изменения кода) очень ценятся.


контроллер родительской страницы

 public function viewChallengesAction(){ //get instance for request $request = JO_Request::getInstance(); //get activated challenge names and set variables $myChallenge=$this->getChallenge(); $this->view->challengenames = array(); foreach($myChallenge AS $k=>$challengename){ $this->view->challengenames[$k]['href'] = WM_Router::create($request->getBaseUrl() . '?module=challenges&controller=index&action=yourChallenge?code=' . $challengename['partnerName']); $this->view->challengenames[$k]['partnerName'] = $challengename['partnerName']; } 

ДЕТСКИЙ ВЗГЛЯД

 <div id="defaultcontainerwrapper" class="maxwidth"> <?php $challengename = $this->challenge; ?> <header> <h1> <div class="list"> <span>Welcome to </span><?php echo $challengename['partnerName']; ?><span>'s Beat Waste Challenge!</span> </div> </h1> </header> <?php } ?> </div> 

КОНТРОЛЛЕР ДЕТЕЙ

 public function yourChallengeAction(){ //get activated challenge names and set variables $request = JO_Request::getInstance(); $myChallenge=$this->getChallenge(); $code = $request->getQuery("code"); $this->view->challengenames = array(); foreach($myChallenge AS $k=>$challengename){ if ($challengename['partnerName'] == $code) { $this->view->challenge = $challengename; break; } } 

Если вы не знаете ключ и хотите использовать текущий элемент массива, вы можете использовать:

 $challengename = current($this->challengenames); 

Или первый элемент массива:

 $challengename = reset($this->challengenames); 

Или последний элемент массива:

 $challengename = end($this->challengenames); 

Просто отметьте, что конец и сброс изменят местоположение указателя массива.

  <?php $challengename = $this->challengenames[0] ?> 

Вам не хватает последнего; попробуйте добавить его; попробуйте ниже:

  <?php $challengename = $this->challengenames[0]; ?>