Sign in to follow this  
louisstephens

[SOLVED] Appending new item into foreach grid

Recommended Posts

From my last post, I was given a good idea on how to count the repeater items, and it worked wonderfully. I got my code working well and the columns (based on the count) all work well as well. Now, I have a head scratcher on my hands. 

<?php
	$buttonsIncluded = $page->special_custom_buttons->find('special_custom_buttons_include=1');
	$buttonsIncludedCount = count($buttonsIncluded);
	$buttonsIncludedCountAdditional = $buttonsIncludedCount +1;
	echo $buttonsIncludedCount;
?>

<div class="row">
	<?php foreach($buttonsIncluded as $button): ?>
	<?php if($button->custom_buttons_include): ?>
		<?php if($buttonsIncludedCountAdditional == 2): ?>
			<div class="col-6">
				<a href=""><?php echo $button->custom_buttons_text; ?></a>
			</div>
		<?php elseif($buttonsIncludedCountAdditional == 3): ?>
			<div class="col-4">
				<a href=""><?php echo $button->custom_buttons_text; ?></a>
			</div>
		<?php elseif($buttonsIncludedCountAdditional == 4): ?>
			<div class="col-3">
				<a href=""><?php echo $button->custom_buttons_text; ?></a>
			</div>

		<?php endif; ?>
	<?php endif; ?>
	<?php endforeach; ?>
</div>

All of this is included in a larger foreach statement that is pulling in other data (like body copy etc etc) from a Page Table field. As you can see in my code above, I am adding "1" to the count, so I can have space in the grid layout for a new button.

So, right now: it looks something like: 

[repeater button]		[repeater button]		[repeater button]		[space for new button]

What I really need to do is to pull in the button from the Page Table and add it into the new space so it looks like:

[repeater button]		[repeater button]		[repeater button]		[button from Page Table]

Is this even possible todo, or is there a better way to go about this? 

 

*Edit*

So, I really just overlooked something quite easy here. Since the grid is based on 12 columns, I could just take 12 and divide by $buttonsIncludedCountAdditional which would give me the remaining col width to use outside the foreach loop. I was trying to make this too complicated.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By louisstephens
      Is it possible to use count() to return a number of repeater items don't have a checkbox checked? In my current set up, I have a repeater on the page "dev_repeater" with a checkbox called "dev_repeater_exclude". I need to get a count of the current items that do not have it checked so I can pass it to my css grid to alter the column width.
    • By awebcreature
      Hi all,
      I have a small project which need to get records from Immowelt.de through API.  These records must be on specific user who has entered them. I find the documentation of this API but i don't find something about such selection of user related records. All parameters are for all records in immowelt.de database without user related selection. 
      https://www.immowelt.de/ImmoweltAG/InternetProdukte/api-immowelt.pdf
      Anyone with experience with this Immowelt.de API?  
    • By Arunesh Dutta
      Hello all
      I am newbie.Wanted to know does processwire will allow to display external website content and other sources to my website using API powered by processwire
    • By louisstephens
      So I have a form, once completed, will create new pages. All in all, this is eazy-peezy for me now. I guess I need a bit of guidance on how to actually structure the rest of my code.  I thought I could just write a function (_func.php) and pass the fields to the function and let it do its' thing. However, I am kinda hitting a road block when I do it this way. 
      I currently am passing first name, last name, city, state (options field), and making pages based on the first/last names. I guess where I run into some issues is I am trying to check to see if the "page" already exists, and if it does, throw out an error:
      In the home template:
      if(isset( $_POST['submit'])) { $firstName =Trim (stripslashes($_POST['firstname'])); $lastName = Trim(stripslashes($_POST['lastname'])); $fullName = $firstName . $lastName; $city = Trim(stripslashes($_POST['city'])); $state = Trim(stripslashes($_POST['state'])); $lowerCaseName = strtolower($fullName); $people = $pages->find("template=person"); foreach ($people as $person) { $checkFirstName = $person->first_name; $checkLastName = $person->last_name; $checkFullName = $checkFirstName . $checkLastName; if ($checkFullName === $lowerCaseName) { echo "<p>" . "This person has already created a page. Please choose a different name." . "</p>"; } else { echo "hey"; processNewPerson(need_to_pass_person_details_to_function); } } // end foreach In _func.php:
      function processNewPerson($list) { $u = new Page(); $u->template = "person"; $u->parent = wire('pages')->get("/people/"); $u->title = ; $u->first_name = ; $u->last_name = ; $u->state = ; $u->city = ; $u->save(); $u->setOutputFormatting(false); } I am a little unsure of how to actually pass all the information to the template, as well as if this is even the best approach to do this. Would it make more sense to do this in a class, or keep it the way it is?