コード例 #1
0
 /**
  *   Return a view showing one of the pages
  *
  * @param String $slug - if numeric will be treated as an id, otherwise will search for matching slug
  * @param String $pageSlug - if numeric will be treated as an id, otherwise will search for matching slug
  * @return View - returns created page, or throws a 404 if slug is invalid or can't find a matching record
  */
 public function page($slug, $pageSlug)
 {
     // Build query to find relevent Project
     $query = Project::where('slug', '=', $slug)->with('pages');
     $project = $query->first();
     // Check if a project was found
     if ($project == null) {
         return abort('404', 'Invalid project slug');
     } else {
         // Filter related pages and return the one with the correct slug
         $filteredPages = $project->pages->filter(function ($page) use($pageSlug) {
             if (isset($page->slug) && $page->slug == $pageSlug) {
                 return $page;
             }
         });
         $page = $filteredPages->first();
         // Check if a page was found
         if ($page != null) {
             if ($page->template == null || $page->template == 'default') {
                 $template = 'portfolio::page';
             } else {
                 $template = 'portfolio::pages.' . $page->template;
             }
             // Return view with projects
             return view($template)->with(['page' => $page, 'project' => $project]);
         } else {
             // No project found, throw a 404.
             return abort('404', 'Invalid page slug');
         }
     }
 }
コード例 #2
0
ファイル: Seed.php プロジェクト: dan-powell/portfolio
 private function seedProjects()
 {
     $faker = \Faker\Factory::create();
     Model::unguard();
     // create some Portfolio Items
     for ($i = 0; $i < 20; $i++) {
         Project::create(array('created_at' => $faker->dateTimeBetween($startDate = '-1 years', $endDate = 'now'), 'updated_at' => $faker->dateTimeBetween($startDate = '-1 years', $endDate = 'now'), 'title' => $faker->sentence(rand(2, 5)), 'slug' => $faker->slug, 'seo_title' => $faker->sentence(rand(1, 4)), 'seo_description' => $faker->paragraph(1), 'markup' => $faker->paragraph(rand(3, 8)), 'featured' => $faker->randomElement([0, 1])));
     }
     // Add some Sections to projects
     for ($i = 0; $i < 40; $i++) {
         Section::create(array('markup' => $faker->paragraph(rand(3, 8)), 'attachment_id' => $faker->numberBetween(1, 20), 'attachment_type' => 'DanPowell\\Portfolio\\Models\\Project'));
     }
     // Assign some tags to projects
     for ($i = 0; $i < 16; $i++) {
         DB::table('taggables')->insert(array('tag_id' => $faker->numberBetween(1, 10), 'taggable_id' => $faker->numberBetween(1, 20), 'taggable_type' => 'DanPowell\\Portfolio\\Models\\Project'));
     }
 }
コード例 #3
0
 /**
  * Bind data to the view.
  *
  * @param  View  $view
  * @return void
  */
 public function compose(View $view)
 {
     $projects = Project::where('featured', '=', '1')->orderBy('created_at', 'DESC')->take(3)->get();
     $view->with('projects', $projects);
 }