У меня две записи в моем 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]; ?>