title
Laravel PHP Framework Tutorial - Full Course for Beginners | Build a Blog with Laravel

description
Welcome to this course on PHP Laravel Tutorial for Beginners. Laravel is one of the the most popular option among PHP developers these days. In this course you will Learn the basic concepts, functions that you will need to build fully functional programs with the popular framework, Laravel. Laravel is a Full stack framework. We will see How to Build a Blog with Laravel . βœ” Contents βœ” πŸ’» (00:01:01) 1- Introduction to Laravel framework πŸ’» ( 00:09:39) 2- Laravel Installation and Environment Setup πŸ’» ( 00:20:48) 3 - Basic Routing and Controllers πŸ’» ( 00:32:28) 4 - Controllers in Laravel πŸ’» ( 00:45:53) 5 - Laravel Blade Templating πŸ’» ( 00:56:05) 6 - How to Compile Assets in Laravel πŸ’» ( 01:06:29) 7 - Models and Migrations (Models & Database Migrations) πŸ’» ( 01:17:40) 8 - Fetching Data Using Eloquent ORM Part 1 πŸ’» ( 01:29:27) 9 - Fetching Data Using Eloquent ORM Part 2 πŸ’» ( 01:40:36) 10 - Fetching Data Using Eloquent ORM Part 3 πŸ’» ( 01:52:41) 11 - Forms and Saving Data Part 1 πŸ’» ( 02:03:18) 12 - Forms and Saving Data Part 2 πŸ’» ( 02:13:34) 13 - Update and Delete record from MySQL in Laravel πŸ’» ( 02:28:30) 14 - User Authentication πŸ’» ( 02:41:52) 15 - Model Relationships πŸ’» ( 02:53:54) 16 - How to Add User Access Control πŸ’» ( 03:05:49) 17 - Laravel File Upload Example πŸ’» ( 03:15:53) 18 - retrieve images from database πŸ’» ( 03:28:13) 19 - Finishing File Upload #ProgrammingKnowledge #laravel #php #developer #development #css #dreamleowebsolution #webdesign #webdevelopment #codeigniter #website #javascript #webdeveloper#programming #coding #marketing #hosting #ios #programmer #wordpress β˜…β˜…β˜…Top Online Courses From ProgrammingKnowledge β˜…β˜…β˜… Python Programming Course ➑️ http://bit.ly/2vsuMaS ⚫️ http://bit.ly/2GOaeQB Java Programming Course ➑️ http://bit.ly/2GEfQMf ⚫️ http://bit.ly/2Vvjy4a Bash Shell Scripting Course ➑️ http://bit.ly/2DBVF0C ⚫️ http://bit.ly/2UM06vF Linux Command Line Tutorials ➑️ http://bit.ly/2IXuil0 ⚫️ http://bit.ly/2IXukt8 C Programming Course ➑️ http://bit.ly/2GQCiD1 ⚫️ http://bit.ly/2ZGN6ej C++ Programming Course ➑️ http://bit.ly/2V4oEVJ ⚫️ http://bit.ly/2XMvqMs PHP Programming Course ➑️ http://bit.ly/2XP71WH ⚫️ http://bit.ly/2vs3od6 Android Development Course ➑️ http://bit.ly/2UHih5H ⚫️ http://bit.ly/2IMhVci C# Programming Course ➑️ http://bit.ly/2Vr7HEl ⚫️ http://bit.ly/2W6RXTU JavaFx Programming Course ➑️ http://bit.ly/2XMvZWA ⚫️ http://bit.ly/2V2CoAi NodeJs Programming Course ➑️ http://bit.ly/2GPg7gA ⚫️ http://bit.ly/2GQYTQ2 Jenkins Course For Developers and DevOps ➑️ http://bit.ly/2Wd4l4W ⚫️ http://bit.ly/2J1B1ug Scala Programming Tutorial Course ➑️ http://bit.ly/2PysyA4 ⚫️ http://bit.ly/2PCaVj2 Bootstrap Responsive Web Design Tutorial ➑️ http://bit.ly/2DFQ2yC ⚫️ http://bit.ly/2VoJWwH MongoDB Tutorial Course ➑️ http://bit.ly/2LaCJfP ⚫️ http://bit.ly/2WaI7Ap QT C++ GUI Tutorial For Beginners ➑️ http://bit.ly/2vwqHSZ β˜…β˜…β˜… Online Courses to learn β˜…β˜…β˜… Get 2 FREE Months of Unlimited Classes from skillshare - https://skillshare.eqcm.net/r1KEj Data Science - http://bit.ly/2lD9h5L | http://bit.ly/2lI8wIl Machine Learning - http://bit.ly/2WGGQpb | http://bit.ly/2GghLXX Artificial Intelligence - http://bit.ly/2lYqaYx | http://bit.ly/2NmaPya MERN Stack E-Degree Program - http://bit.ly/2kx2NFe | http://bit.ly/2lWj4no DevOps E-degree - http://bit.ly/2k1PwUQ | http://bit.ly/2k8Ypfy Data Analytics with R - http://bit.ly/2lBKqz8 | http://bit.ly/2lAjos3 AWS Certification Training - http://bit.ly/2kmLtTu | http://bit.ly/2lAkQL1 Projects in Java - http://bit.ly/2kzn25d | http://bit.ly/2lBMffs Machine Learning With TensorFlow - http://bit.ly/2m1z3AF | http://bit.ly/2lBMhnA Angular 8 - Complete Essential Guide - http://bit.ly/2lYvYRP Kotlin Android Development Masterclass - http://bit.ly/2GcblsI Learn iOS Programming Building Advance Projects - http://bit.ly/2kyX7ue β˜…β˜…β˜… Follow β˜…β˜…β˜… My Website - http://www.codebind.com DISCLAIMER: This video and description contains affiliate links, which means that if you click on one of the product links, I’ll receive a small commission. This help support the channel and allows us to continue to make videos like this. Thank you for the support!

detail
{'title': 'Laravel PHP Framework Tutorial - Full Course for Beginners | Build a Blog with Laravel', 'heatmap': [{'end': 2529.6, 'start': 2258.385, 'weight': 1}, {'end': 2929.005, 'start': 2779.025, 'weight': 0.785}, {'end': 3195.659, 'start': 3052.618, 'weight': 0.703}, {'end': 3989.009, 'start': 3705.884, 'weight': 0.875}, {'end': 4650.98, 'start': 4514.645, 'weight': 0.94}, {'end': 5444.969, 'start': 5177.686, 'weight': 0.702}, {'end': 6774.458, 'start': 6633.849, 'weight': 0.753}, {'end': 9705.218, 'start': 9555.685, 'weight': 0.71}], 'summary': 'This tutorial series covers laravel fundamentals, setting up environment with wamp server, essentials like routing & templating, service & asset management, database setup, displaying & updating posts, form inputs, syntax highlighting, user authentication, blog functionality, file upload, image handling, and upload logic. it emphasizes the use of artisan cli, node.js, and phpmyadmin for various tasks and provides step-by-step instructions for windows environments.', 'chapters': [{'end': 566.299, 'segs': [{'end': 41.244, 'src': 'embed', 'start': 0.509, 'weight': 0, 'content': [{'end': 1.39, 'text': "hey, what's going on, guys?", 'start': 0.509, 'duration': 0.881}, {'end': 8.295, 'text': "welcome back to our youtube channel and, as promised, we're finally going to get into Laravel.", 'start': 1.39, 'duration': 6.905}, {'end': 10.898, 'text': 'we have had some requests to this tutorial.', 'start': 8.295, 'duration': 2.603}, {'end': 15.882, 'text': "so in this series, we're going or we're not just going to be covering the fundamentals of Laravel.", 'start': 10.898, 'duration': 4.984}, {'end': 20.185, 'text': "we'll also be building a project from start to finish,", 'start': 15.882, 'duration': 4.303}, {'end': 29.513, 'text': "and in this video we're going to take a look at what we will be building and we're also going to talk a little bit about Laravel and some of the things that it can do.", 'start': 20.185, 'duration': 9.328}, {'end': 41.244, 'text': 'by the way, guys, if you are new to this YouTube channel and you want contents about programming tutorials, so we have a lot of topics like Java, PHP,', 'start': 30.322, 'duration': 10.922}], 'summary': 'Tutorial on laravel covering fundamentals and building a project from start to finish.', 'duration': 40.735, 'max_score': 0.509, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy8509.jpg'}], 'start': 0.509, 'title': 'Laravel fundamentals', 'summary': 'Introduces laravel, an open-source php framework, and outlines the plan to cover its fundamentals while building a project from start to finish. it emphasizes its popularity, respect, and use of the mvc design pattern. it also covers the advantages of using laravel, such as its simple routing, security features, database handling, and the use of artisan cli for various tasks such as creating controllers, models, database migrations, and more.', 'chapters': [{'end': 123.796, 'start': 0.509, 'title': 'Introduction to laravel', 'summary': 'Introduces laravel, an open-source php framework, and outlines the plan to cover its fundamentals while building a project from start to finish, emphasizing its popularity, respect, and use of the mvc design pattern.', 'duration': 123.287, 'highlights': ['Laravel is an open source PHP framework, focusing on making the development process pleasing without sacrificing quality. It is popular, respected, and uses the MVC design pattern.', 'The creators of Laravel aim to make the development process pleasing without sacrificing the quality, emphasizing the elegance and seamless integration of components.', 'Laravel uses the MVC (Model-View-Controller) design pattern, where the model deals with the database, the view is the user interface, and the controller handles requests from URLs or forms.', 'The chapter introduces the plan to cover the fundamentals of Laravel while building a project from start to finish, addressing its popularity and respect in the programming community.', 'The video emphasizes the importance of subscribing to the YouTube channel for programming tutorials on Java, PHP, Python, and other topics.']}, {'end': 566.299, 'start': 125.771, 'title': 'Laravel overview & installation', 'summary': 'Introduces the topics covered in the series, including building a website with authentication, and discusses the advantages of using laravel, such as its simple routing, security features, database handling, command line tool artisan, blade template engine, authentication setup, session handling, asset compilation, error handling, unit testing, email configuration, and cache handling. it also mentions the use of wamp for windows development and composer for installation. artisan cli is highlighted as a tool for various tasks such as creating controllers, models, database migrations, providers, events, jobs, form requests, and custom commands.', 'duration': 440.528, 'highlights': ['The chapter introduces the topics covered in the series, including building a website with authentication, and discusses the advantages of using Laravel, such as its simple routing, security features, database handling, command line tool Artisan, blade template engine, authentication setup, session handling, asset compilation, error handling, unit testing, email configuration, and cache handling. The chapter outlines the topics covered in the series and the benefits of using Laravel, including various features such as simple routing, security measures, database handling, Artisan command line tool, blade template engine, authentication setup, session handling, asset compilation, error handling, unit testing, email configuration, and cache handling.', 'Artisan CLI is highlighted as a tool for various tasks such as creating controllers, models, database migrations, providers, events, jobs, form requests, and custom commands. The Artisan CLI in Laravel is emphasized for its ability to handle various tasks such as creating controllers, models, database migrations, providers, events, jobs, form requests, and custom commands.', 'The installation process for Laravel using Composer and the use of WAMP for Windows development is mentioned, with a note that Laravel is cross-platform. The transcript discusses the installation process for Laravel using Composer and the use of WAMP for Windows development, while also highlighting that Laravel is cross-platform.']}], 'duration': 565.79, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy8509.jpg', 'highlights': ['Laravel is an open source PHP framework, focusing on making the development process pleasing without sacrificing quality. It is popular, respected, and uses the MVC design pattern.', 'The chapter introduces the plan to cover the fundamentals of Laravel while building a project from start to finish, addressing its popularity and respect in the programming community.', 'The chapter introduces the topics covered in the series, including building a website with authentication, and discusses the advantages of using Laravel, such as its simple routing, security features, database handling, command line tool Artisan, blade template engine, authentication setup, session handling, asset compilation, error handling, unit testing, email configuration, and cache handling.', 'Artisan CLI is highlighted as a tool for various tasks such as creating controllers, models, database migrations, providers, events, jobs, form requests, and custom commands. The Artisan CLI in Laravel is emphasized for its ability to handle various tasks such as creating controllers, models, database migrations, providers, events, jobs, form requests, and custom commands.']}, {'end': 1471.924, 'segs': [{'end': 696.676, 'src': 'embed', 'start': 662.784, 'weight': 0, 'content': [{'end': 665.506, 'text': 'I think they have the LAMP and the WAMP.', 'start': 662.784, 'duration': 2.722}, {'end': 667.948, 'text': 'So you can use that as well.', 'start': 666.387, 'duration': 1.561}, {'end': 672.451, 'text': "So for this tutorial, we're going to use WAMP server, the composer.", 'start': 668.468, 'duration': 3.983}, {'end': 682.621, 'text': 'right and we also have the git, so you can download this as well and install in your local machine.', 'start': 673.932, 'duration': 8.689}, {'end': 685.324, 'text': "so we're going to use these tools later on.", 'start': 682.621, 'duration': 2.703}, {'end': 696.676, 'text': 'and also, if you want, you can also download and install the atom code editor, but any editor will do.', 'start': 685.324, 'duration': 11.352}], 'summary': 'Using wamp server, composer, and git for tutorial, can also use atom code editor.', 'duration': 33.892, 'max_score': 662.784, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy8662784.jpg'}, {'end': 807.381, 'src': 'embed', 'start': 732.611, 'weight': 1, 'content': [{'end': 735.493, 'text': 'All right, our next step is to create our Laravel project.', 'start': 732.611, 'duration': 2.882}, {'end': 739.675, 'text': 'And in order for us to do that, we need Bash or Git.', 'start': 736.293, 'duration': 3.382}, {'end': 753.182, 'text': 'But actually we can use the Windows PowerShell for that for as long as the composer is integrated to that particular command line or command prompt or the Windows PowerShell.', 'start': 740.535, 'duration': 12.647}, {'end': 757.644, 'text': "So let's open up our Windows PowerShell.", 'start': 753.842, 'duration': 3.802}, {'end': 759.185, 'text': 'There you go.', 'start': 758.805, 'duration': 0.38}, {'end': 767.405, 'text': "And I'm just going to change the font here so that you can see what I am typing here.", 'start': 761.261, 'duration': 6.144}, {'end': 771.248, 'text': "So instead of 12, let's make it like 24.", 'start': 767.485, 'duration': 3.763}, {'end': 774.63, 'text': "Okay, I think that's better.", 'start': 771.248, 'duration': 3.382}, {'end': 783.285, 'text': "and currently we're here at this directory users and then admin.", 'start': 777.16, 'duration': 6.125}, {'end': 800.699, 'text': 'so we want to change this directory and go to our localhost directory, so cd dot, dot and another one.', 'start': 783.285, 'duration': 17.414}, {'end': 807.381, 'text': 'so if you try to check our directory, we have here the 164.', 'start': 800.699, 'duration': 6.682}], 'summary': 'Creating a laravel project using windows powershell with integrated composer, changing font size to 24 for better visibility, and navigating directories to localhost.', 'duration': 74.77, 'max_score': 732.611, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy8732611.jpg'}, {'end': 1471.924, 'src': 'embed', 'start': 1377.49, 'weight': 6, 'content': [{'end': 1391.293, 'text': 'And also Laravel creates a folder for the other controllers, such as the login controller, register controller and reset password controller.', 'start': 1377.49, 'duration': 13.803}, {'end': 1401.436, 'text': 'So all of these controllers we can use this readily if you try to enable the auth for our project.', 'start': 1391.714, 'duration': 9.722}, {'end': 1414.259, 'text': 'and if we try to create a controller, we can actually manually create a file here, or that PHP file, which is for our controller and also we can use,', 'start': 1403.336, 'duration': 10.923}, {'end': 1419.481, 'text': 'or we can create a model by just manually adding it here.', 'start': 1414.259, 'duration': 5.222}, {'end': 1426.003, 'text': 'but the best way for adding controllers and and the model is by using the artisan.', 'start': 1419.481, 'duration': 6.522}, {'end': 1431.368, 'text': "Now, if you're wondering, what is this namespace app?", 'start': 1426.963, 'duration': 4.405}, {'end': 1436.533, 'text': 'So this is just basically grouping our classes or our code.', 'start': 1432.149, 'duration': 4.384}, {'end': 1443.161, 'text': "So this is pretty common especially if you're working the object oriented way of programming.", 'start': 1437.214, 'duration': 5.947}, {'end': 1457.933, 'text': "So we're just basically grouping our classes and try to distinguish between different classes and the same classes inside this directory.", 'start': 1443.821, 'duration': 14.112}, {'end': 1463.417, 'text': "And also if you see the illuminate here, don't get confused.", 'start': 1458.613, 'duration': 4.804}, {'end': 1470.803, 'text': 'It is just basically a core files or core functions coming from the Laravel.', 'start': 1464.118, 'duration': 6.685}, {'end': 1471.924, 'text': "So don't worry about this.", 'start': 1470.823, 'duration': 1.101}], 'summary': "Laravel creates controllers and models using artisan, with 'app' namespace for grouping classes.", 'duration': 94.434, 'max_score': 1377.49, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy81377490.jpg'}], 'start': 566.299, 'title': 'Setting up laravel environment & project with wamp server', 'summary': 'Covers the setup of laravel environment with wamp server, installation of wamp server, composer, git, and atom.io code editor for windows, creating a laravel project with windows powershell, and configuring virtual host to avoid viewing file structure.', 'chapters': [{'end': 807.381, 'start': 566.299, 'title': 'Setting up laravel environment & installation', 'summary': 'Covers the setup of the laravel environment, including the installation of wamp server, composer, and git, along with the option of using the atom.io code editor for windows. additionally, it details the process of creating a laravel project using windows powershell and navigating through directories.', 'duration': 241.082, 'highlights': ['The tutorial series will use WAMP server, composer, and Git for the development process. ', 'The option to use the atom.io code editor for Windows is recommended for the tutorial series. ', 'The process of creating a Laravel project using Windows PowerShell is explained, emphasizing the integration of composer to the command line. ', 'The installation of WAMP server, composer, and Git, along with the navigation through directories using Windows PowerShell, is detailed for setting up the environment. ']}, {'end': 1223.455, 'start': 807.381, 'title': 'Setting up laravel project with wamp server', 'summary': 'Details the steps to create a laravel project using wamp server, including setting up the project with composer, checking the project in a code editor, configuring a virtual host to avoid viewing the file structure in the browser, and restarting the wamp server.', 'duration': 416.074, 'highlights': ['The chapter details the steps to create a Laravel project using WAMP server, including setting up the project with Composer, checking the project in a code editor, configuring a virtual host to avoid viewing the file structure in the browser, and restarting the WAMP server.', "Creating a Laravel project using Composer and providing a project name, like 'LMS' or 'Programming Knowledge Project'.", 'Configuring a virtual host in WAMP server to redirect to the public folder of the Laravel project, thus enabling access to the home page of the application.', 'Restarting the WAMP server to apply the changes made in the virtual host configuration.']}, {'end': 1471.924, 'start': 1223.455, 'title': 'Laravel mvc structure', 'summary': 'Covers the basic routing and controllers in the third part of the laravel tutorial series, including the folder structure for models and controllers, namespaces, and the core functions from laravel.', 'duration': 248.469, 'highlights': ['Laravel uses the model view controller or MVC format, with specific areas for models, views, and controllers.', "The app folder contains the model 'user.php,' which is a model file, and models can be added inside the app folder or in a subfolder named 'models.'", "The 'base controller' in the 'http/controllers' folder extends the base controller and its methods and functions can be used in controller files.", 'Laravel creates folders for other controllers like login, register, and reset password controllers, readily available if auth is enabled for the project.', "The 'namespace app' is used to group classes and distinguish between different classes and the same classes inside the directory when working in an object-oriented way of programming."]}], 'duration': 905.625, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy8566299.jpg', 'highlights': ['The tutorial series will use WAMP server, composer, and Git for the development process.', 'The option to use the atom.io code editor for Windows is recommended for the tutorial series.', 'The process of creating a Laravel project using Windows PowerShell is explained, emphasizing the integration of composer to the command line.', 'The installation of WAMP server, composer, and Git, along with the navigation through directories using Windows PowerShell, is detailed for setting up the environment.', 'The chapter details the steps to create a Laravel project using WAMP server, including setting up the project with Composer, checking the project in a code editor, configuring a virtual host to avoid viewing the file structure in the browser, and restarting the WAMP server.', "Creating a Laravel project using Composer and providing a project name, like 'LMS' or 'Programming Knowledge Project'.", 'Configuring a virtual host in WAMP server to redirect to the public folder of the Laravel project, thus enabling access to the home page of the application.', 'Restarting the WAMP server to apply the changes made in the virtual host configuration.', 'Laravel uses the model view controller or MVC format, with specific areas for models, views, and controllers.', "The app folder contains the model 'user.php,' which is a model file, and models can be added inside the app folder or in a subfolder named 'models.'", "The 'base controller' in the 'http/controllers' folder extends the base controller and its methods and functions can be used in controller files.", 'Laravel creates folders for other controllers like login, register, and reset password controllers, readily available if auth is enabled for the project.', "The 'namespace app' is used to group classes and distinguish between different classes and the same classes inside the directory when working in an object-oriented way of programming."]}, {'end': 3469.847, 'segs': [{'end': 1582.335, 'src': 'embed', 'start': 1509.55, 'weight': 4, 'content': [{'end': 1518.637, 'text': 'okay. so now that we get that out of the way, we can go to basic routing for our project.', 'start': 1509.55, 'duration': 9.087}, {'end': 1527.748, 'text': 'So basically what we want is to add a pages controller where we can add the about pages, home pages,', 'start': 1519.11, 'duration': 8.638}, {'end': 1533.861, 'text': 'contact or any other page that we want to add in our project.', 'start': 1529.158, 'duration': 4.703}, {'end': 1549.671, 'text': 'so if you try to go to our project and routes here and web, we can see, we can see here that we have the route and colon,', 'start': 1533.861, 'duration': 15.81}, {'end': 1555.054, 'text': 'colon and then the type of request that we want and then the URL and of course,', 'start': 1549.671, 'duration': 5.383}, {'end': 1565.182, 'text': 'the function that return something or put a lot of operation inside this function.', 'start': 1555.054, 'duration': 10.128}, {'end': 1569.626, 'text': "so we'll try that for now and try, let's try to open up our project in our browser.", 'start': 1565.182, 'duration': 4.444}, {'end': 1575.77, 'text': 'So here is our project and pkproject.loc/.', 'start': 1571.027, 'duration': 4.743}, {'end': 1582.335, 'text': "So here's the homepage where we can see all the links and the title Laravel.", 'start': 1576.251, 'duration': 6.084}], 'summary': 'Setting up basic routing for adding pages controller to project, including home, about, and contact pages.', 'duration': 72.785, 'max_score': 1509.55, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy81509550.jpg'}, {'end': 2099.742, 'src': 'embed', 'start': 2033.876, 'weight': 13, 'content': [{'end': 2039.077, 'text': "so let's go here, the install section,", 'start': 2033.876, 'duration': 5.201}, {'end': 2053.917, 'text': "and then we need to search for atom terminal and then we're going to use this terminal for us to issue command by using the artisan for us to create controllers automatically.", 'start': 2039.077, 'duration': 14.84}, {'end': 2058.199, 'text': 'so there are a lot of of terminal available.', 'start': 2054.878, 'duration': 3.321}, {'end': 2072.466, 'text': "if we search for terminal inside the atom code editor, but i'm using this one this is atom dash terminals 0.8.0.", 'start': 2058.199, 'duration': 14.267}, {'end': 2077.487, 'text': 'so it accordingly it opened terminal terminal, the current files directory.', 'start': 2072.466, 'duration': 5.021}, {'end': 2083.311, 'text': 'so whenever we activated this terminal, it will be inside the current files directory.', 'start': 2077.487, 'duration': 5.824}, {'end': 2086.393, 'text': 'so Go ahead and try to install that.', 'start': 2083.311, 'duration': 3.082}, {'end': 2088.134, 'text': 'So it is developed by Karen.', 'start': 2086.433, 'duration': 1.701}, {'end': 2092.097, 'text': 'So, as you can see here and this will be our basis,', 'start': 2088.353, 'duration': 3.744}, {'end': 2099.742, 'text': 'and we will be using this to issue commands by using the artisan to create our controllers automatically', 'start': 2092.097, 'duration': 7.645}], 'summary': 'Using atom terminal to issue commands for creating controllers automatically.', 'duration': 65.866, 'max_score': 2033.876, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy82033876.jpg'}, {'end': 2529.6, 'src': 'heatmap', 'start': 2238.56, 'weight': 3, 'content': [{'end': 2248.583, 'text': 'and any controller that you created should extend the controller class and inside here we can create a function or method.', 'start': 2238.56, 'duration': 10.023}, {'end': 2252.203, 'text': 'so a function inside the class is can be called a method.', 'start': 2248.583, 'duration': 3.62}, {'end': 2256.625, 'text': 'also, so public function and then index.', 'start': 2252.203, 'duration': 4.422}, {'end': 2263.049, 'text': 'Okay, so public means that we can access this outside of this class.', 'start': 2258.385, 'duration': 4.664}, {'end': 2270.294, 'text': "So for now, let's just say it will return a text or word index.", 'start': 2263.589, 'duration': 6.705}, {'end': 2275.438, 'text': "And let's go back to our routes folder and web.php.", 'start': 2270.914, 'duration': 4.524}, {'end': 2280.742, 'text': 'So we have here the index set up like this.', 'start': 2276.158, 'duration': 4.584}, {'end': 2287.807, 'text': "So instead of using this, so I'm just going to go ahead and comment this out.", 'start': 2281.302, 'duration': 6.505}, {'end': 2300.389, 'text': 'and then paste it here So instead of using this function to return our index.', 'start': 2291.983, 'duration': 8.406}, {'end': 2308.193, 'text': "So let's just try the pages controller or we'll try to use our pages controller here.", 'start': 2301.149, 'duration': 7.044}, {'end': 2322.86, 'text': "So first let's use the quotations pages controller and add symbol and of course the method or the function that we have defined which is the index.", 'start': 2309.493, 'duration': 13.367}, {'end': 2326.862, 'text': "and now let's try this in our browser.", 'start': 2323.48, 'duration': 3.382}, {'end': 2336.228, 'text': "so I'm just gonna save this web.php and go back to our browser and try to refresh.", 'start': 2326.862, 'duration': 9.366}, {'end': 2344.754, 'text': 'so, as you can see, we are on the root folder or the root directory of our file or our project, and then it says the index,', 'start': 2336.228, 'duration': 8.526}, {'end': 2349.137, 'text': 'which is coming from our pages controller and index method.', 'start': 2344.754, 'duration': 4.383}, {'end': 2357.224, 'text': 'So now we want to return the view index instead of this string index.', 'start': 2349.717, 'duration': 7.507}, {'end': 2359.186, 'text': "So let's go back to our code editor.", 'start': 2357.264, 'duration': 1.922}, {'end': 2366.846, 'text': "and in here let's go to pages controller and instead of returning the index,", 'start': 2361.463, 'duration': 5.383}, {'end': 2377.112, 'text': 'we just need to return the view and of course it should be under the pages and then the file index.', 'start': 2366.846, 'duration': 10.266}, {'end': 2384.976, 'text': "so currently i think i think we don't have yet the index.php file.", 'start': 2377.112, 'duration': 7.864}, {'end': 2389.018, 'text': "so let's just go ahead and create that so under resources.", 'start': 2384.976, 'duration': 4.042}, {'end': 2391.199, 'text': 'so we have here the views.', 'start': 2389.018, 'duration': 2.181}, {'end': 2397.903, 'text': "so under pages let's just go ahead and create a new file.", 'start': 2391.199, 'duration': 6.704}, {'end': 2414.234, 'text': "so this should be index.blade.php and let's just try to copy all the html from welcome.blade.php to our index.blade.php.", 'start': 2397.903, 'duration': 16.331}, {'end': 2424.543, 'text': "and just we're just going to delete this content from here and i think also the styles, all the stylings available here.", 'start': 2414.234, 'duration': 10.309}, {'end': 2429.287, 'text': "let's just delete this and of course this font.", 'start': 2424.543, 'duration': 4.744}, {'end': 2431.529, 'text': 'and for the title.', 'start': 2429.287, 'duration': 2.242}, {'end': 2452.905, 'text': "we're going to get back on this later on, but for now let's just define a tag here, h1 and then welcome to laravel for beginners right there,", 'start': 2434.071, 'duration': 18.834}, {'end': 2465.554, 'text': 'beginners from programming knowledge, and then paragraph.', 'start': 2452.905, 'duration': 12.649}, {'end': 2466.795, 'text': 'there you go.', 'start': 2465.554, 'duration': 1.241}, {'end': 2474.364, 'text': 'this is a larval tutorial series.', 'start': 2466.795, 'duration': 7.569}, {'end': 2491.718, 'text': 'Okay so if you try to open up the env file, it holds all the connection, like the values for our database connection, the database name, the password,', 'start': 2477.895, 'duration': 13.823}, {'end': 2493.698, 'text': 'username and all other values.', 'start': 2491.718, 'duration': 1.98}, {'end': 2498.159, 'text': 'And also, it holds the app name of our project.', 'start': 2494.158, 'duration': 4.001}, {'end': 2501.74, 'text': 'So currently, it says Laravel.', 'start': 2498.179, 'duration': 3.561}, {'end': 2505.161, 'text': "So instead of Laravel, I'm just going to rename this pk.", 'start': 2502.14, 'duration': 3.021}, {'end': 2514.268, 'text': 'project or programming knowledge project and save that and go back to our index.blade.php.', 'start': 2506.121, 'duration': 8.147}, {'end': 2529.6, 'text': "so instead of using the laravel as title here, let's just use the config file, so config, and then open close parenthesis and app.name,", 'start': 2514.268, 'duration': 15.332}], 'summary': 'Creating and utilizing a pages controller to display an index view, modifying the app name, and setting up the index.blade.php file.', 'duration': 31.734, 'max_score': 2238.56, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy82238560.jpg'}, {'end': 2414.234, 'src': 'embed', 'start': 2377.112, 'weight': 1, 'content': [{'end': 2384.976, 'text': "so currently i think i think we don't have yet the index.php file.", 'start': 2377.112, 'duration': 7.864}, {'end': 2389.018, 'text': "so let's just go ahead and create that so under resources.", 'start': 2384.976, 'duration': 4.042}, {'end': 2391.199, 'text': 'so we have here the views.', 'start': 2389.018, 'duration': 2.181}, {'end': 2397.903, 'text': "so under pages let's just go ahead and create a new file.", 'start': 2391.199, 'duration': 6.704}, {'end': 2414.234, 'text': "so this should be index.blade.php and let's just try to copy all the html from welcome.blade.php to our index.blade.php.", 'start': 2397.903, 'duration': 16.331}], 'summary': 'Creating index.php file under resources/views/pages as index.blade.php and copying html from welcome.blade.php', 'duration': 37.122, 'max_score': 2377.112, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy82377112.jpg'}, {'end': 2573.669, 'src': 'embed', 'start': 2546.147, 'weight': 0, 'content': [{'end': 2551.011, 'text': 'So as you can see here, we have the new HTML coming from our index.php.', 'start': 2546.147, 'duration': 4.864}, {'end': 2555.215, 'text': 'Welcome to Laravel for beginners from programming knowledge.', 'start': 2551.071, 'duration': 4.144}, {'end': 2563.802, 'text': 'So this is a Laravel tutorial series and this reflects all the content from our index.php file.', 'start': 2555.255, 'duration': 8.547}, {'end': 2568.486, 'text': 'So as you can see here, the code or the HTML code behind this page.', 'start': 2563.822, 'duration': 4.664}, {'end': 2573.669, 'text': "okay. so for now, let's just do the same for our about page.", 'start': 2569.747, 'duration': 3.922}], 'summary': 'Laravel tutorial series with new html from index.php.', 'duration': 27.522, 'max_score': 2546.147, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy82546147.jpg'}, {'end': 2685.899, 'src': 'embed', 'start': 2646.696, 'weight': 12, 'content': [{'end': 2650.219, 'text': 'so, Instead of index, this should be for about.', 'start': 2646.696, 'duration': 3.523}, {'end': 2656.446, 'text': 'So pages that about and this will be for our services.', 'start': 2651.12, 'duration': 5.326}, {'end': 2661.651, 'text': 'So services and save that.', 'start': 2657.467, 'duration': 4.184}, {'end': 2665.856, 'text': 'And in our route file.', 'start': 2662.613, 'duration': 3.243}, {'end': 2670.348, 'text': 'instead of using this routing mechanism.', 'start': 2667.366, 'duration': 2.982}, {'end': 2677.093, 'text': "so let's just replace them with our newly updated functions from pages controllers.", 'start': 2670.348, 'duration': 6.745}, {'end': 2685.899, 'text': "so let's just copy this this will be for about and, of course, change this into the about method,", 'start': 2677.093, 'duration': 8.806}], 'summary': 'Replace index with about, update routing mechanism with new functions from pages controllers.', 'duration': 39.203, 'max_score': 2646.696, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy82646696.jpg'}, {'end': 2749.708, 'src': 'embed', 'start': 2721.697, 'weight': 6, 'content': [{'end': 2725.398, 'text': 'this is the service page of our application.', 'start': 2721.697, 'duration': 3.701}, {'end': 2734.242, 'text': "so i think that's all there is to it for this tutorial and in the next video we're going to discuss how to go about blade templating,", 'start': 2726.278, 'duration': 7.964}, {'end': 2741.145, 'text': "because currently we're using our html for our about, for our services and for our index.php file.", 'start': 2734.242, 'duration': 6.903}, {'end': 2749.708, 'text': 'So we want to reuse and reduce the code for this particular file.', 'start': 2742.365, 'duration': 7.343}], 'summary': 'Next video will discuss blade templating to reuse and reduce code for services page.', 'duration': 28.011, 'max_score': 2721.697, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy82721697.jpg'}, {'end': 2929.005, 'src': 'heatmap', 'start': 2779.025, 'weight': 0.785, 'content': [{'end': 2793.173, 'text': "so we're going to create here a layout directory, so new folder, and then we're just going to name it layouts.", 'start': 2779.025, 'duration': 14.148}, {'end': 2805.86, 'text': 'because, as you can see, if you try to open up our pages, the about the index and services, you can see we have repeating html for our services page,', 'start': 2793.173, 'duration': 12.687}, {'end': 2809.142, 'text': 'our index page and our about page.', 'start': 2805.86, 'duration': 3.282}, {'end': 2815.126, 'text': "so we'll try to minimize that by using our layout files.", 'start': 2809.142, 'duration': 5.984}, {'end': 2819.449, 'text': 'so under layouts this is under view.', 'start': 2815.726, 'duration': 3.723}, {'end': 2836.422, 'text': "so under layouts we will create a new file called app.blade.php and then we're going to substitute or we're going to add some keywords here that will enable us to minimize this repeating html.", 'start': 2819.449, 'duration': 16.973}, {'end': 2849.232, 'text': "And inside here we're just going to copy the HTML from our about blade.php and paste it here in our app.blade.php.", 'start': 2837.983, 'duration': 11.249}, {'end': 2854.957, 'text': "And in here, we'll just say add symbol and then yield.", 'start': 2850.093, 'duration': 4.864}, {'end': 2862.788, 'text': 'and then keyword content.', 'start': 2857.205, 'duration': 5.583}, {'end': 2869.091, 'text': 'so save this and inside our index.php.', 'start': 2862.788, 'duration': 6.303}, {'end': 2872.312, 'text': 'so instead of using all this html,', 'start': 2869.091, 'duration': 3.221}, {'end': 2891.024, 'text': "we'll just delete this and we'll just leave this h1 and paragraph tag and at the top we'll just say extends and then open and close single quote and then layouts.app.", 'start': 2872.312, 'duration': 18.712}, {'end': 2905.713, 'text': 'so the reason behind we put layouts.app because this particular layout belongs or under layouts folder and the name of the layout is app.', 'start': 2891.024, 'duration': 14.689}, {'end': 2913.257, 'text': "so that's why we extend layouts.app here and of course, let's just delete this.", 'start': 2905.713, 'duration': 7.544}, {'end': 2929.005, 'text': "also the body and the html tag, and in here we're just gonna put at section and it should be the content right there and in here.", 'start': 2913.257, 'duration': 15.748}], 'summary': 'Creating a layout directory to minimize repeating html using app.blade.php and yield keyword.', 'duration': 149.98, 'max_score': 2779.025, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy82779025.jpg'}, {'end': 3195.659, 'src': 'heatmap', 'start': 3052.618, 'weight': 0.703, 'content': [{'end': 3061.605, 'text': "so let's go to our pages controller in the app in http and then under controllers.", 'start': 3052.618, 'duration': 8.987}, {'end': 3073.53, 'text': "so pages controllers, let's try to pass some values or parameters to our layout by just using this mechanism here.", 'start': 3061.605, 'duration': 11.925}, {'end': 3087.262, 'text': "so let's just say title and then welcome to programming knowledge, something like this programming knowledge.", 'start': 3073.53, 'duration': 13.732}, {'end': 3099.372, 'text': "there you go, and actually there's two ways on how to do this, but i'll show you both ways on passing values to our template.", 'start': 3087.262, 'duration': 12.11}, {'end': 3105.377, 'text': "so the first way is this so let's just pass parameters.", 'start': 3099.372, 'duration': 6.005}, {'end': 3114.354, 'text': 'so view and then compact, compact there and pass in the title as the parameter.', 'start': 3105.377, 'duration': 8.977}, {'end': 3115.554, 'text': "and let's go to our index.", 'start': 3114.354, 'duration': 1.2}, {'end': 3118.316, 'text': 'so instead of using this text here.', 'start': 3115.554, 'duration': 2.762}, {'end': 3127.32, 'text': "let's type in curly braces and then title.", 'start': 3118.316, 'duration': 9.004}, {'end': 3132.422, 'text': "there you go, and let's try to save this and go back to our browser.", 'start': 3127.32, 'duration': 5.102}, {'end': 3137.445, 'text': "so this is the original text welcome to laravel for beginners, and let's refresh our page.", 'start': 3132.422, 'duration': 5.023}, {'end': 3141.949, 'text': 'so I think we have an error.', 'start': 3140.509, 'duration': 1.44}, {'end': 3144.35, 'text': 'use of undefined constant title, assume.', 'start': 3141.949, 'duration': 2.401}, {'end': 3149.692, 'text': 'so I think we forgot to type in the dollar sign or money sign.', 'start': 3144.35, 'duration': 5.342}, {'end': 3160.395, 'text': 'so instead of only the title, will type in the dollar sign for our placeholder and then save that and refresh.', 'start': 3149.692, 'duration': 10.703}, {'end': 3162.295, 'text': 'there you go.', 'start': 3161.755, 'duration': 0.54}, {'end': 3166.937, 'text': 'as you can see, welcome to programming knowledge.', 'start': 3162.295, 'duration': 4.642}, {'end': 3174.879, 'text': "so let's just just to make sure, let's just change something here in our text.", 'start': 3166.937, 'duration': 7.942}, {'end': 3178.82, 'text': 'so instead of the title,', 'start': 3174.879, 'duration': 3.941}, {'end': 3191.033, 'text': "let's just say welcome to programming knowledge and then let's try to add a mark there or the exclamation mark and refresh our page.", 'start': 3178.82, 'duration': 12.213}, {'end': 3195.659, 'text': 'and there you can see welcome to programming knowledge with the exclamation mark.', 'start': 3191.033, 'duration': 4.626}], 'summary': "Demonstrating passing values to a layout in laravel, achieving 'welcome to programming knowledge' display with an exclamation mark.", 'duration': 143.041, 'max_score': 3052.618, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy83052618.jpg'}, {'end': 3178.82, 'src': 'embed', 'start': 3144.35, 'weight': 7, 'content': [{'end': 3149.692, 'text': 'so I think we forgot to type in the dollar sign or money sign.', 'start': 3144.35, 'duration': 5.342}, {'end': 3160.395, 'text': 'so instead of only the title, will type in the dollar sign for our placeholder and then save that and refresh.', 'start': 3149.692, 'duration': 10.703}, {'end': 3162.295, 'text': 'there you go.', 'start': 3161.755, 'duration': 0.54}, {'end': 3166.937, 'text': 'as you can see, welcome to programming knowledge.', 'start': 3162.295, 'duration': 4.642}, {'end': 3174.879, 'text': "so let's just just to make sure, let's just change something here in our text.", 'start': 3166.937, 'duration': 7.942}, {'end': 3178.82, 'text': 'so instead of the title,', 'start': 3174.879, 'duration': 3.941}], 'summary': 'The transcript discusses adding a dollar sign as a placeholder in a programming context.', 'duration': 34.47, 'max_score': 3144.35, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy83144350.jpg'}], 'start': 1473.228, 'title': 'Laravel essentials', 'summary': 'Covers laravel routing, blade templating, and controllers, including creating routes for pages like about, home, and contact, defining controllers, using blade templating, and incorporating layouts to minimize repeated html.', 'chapters': [{'end': 1931.66, 'start': 1473.228, 'title': 'Laravel routing and blade templating', 'summary': 'Covers the basics of laravel blade templating, creating routes for different pages like about, home, and contact, and handling dynamic values in requests, showcasing the ease of working with laravel routes and views.', 'duration': 458.432, 'highlights': ['Laravel uses the blade templating system for dynamic HTML generation, including if statements, loops, and variables. The blade templating system in Laravel allows for dynamic HTML generation, including if statements, loops, and variables, providing a flexible way to create dynamic web pages.', 'Creating routes for pages like about, home, and contact using a pages controller. The process involves adding a pages controller to handle routes for about, home, contact, or any other desired page, showcasing the flexibility of routing in Laravel for different pages.', "Demonstrating the ease of working with Laravel routes and views, with an example of displaying 'hello world' on the homepage. The demonstration illustrates the simplicity of working with Laravel routes and views, including changing the content displayed on the homepage to 'hello world' and incorporating HTML tags.", 'Handling dynamic values in requests, with an example of submitting and displaying a user with a specific ID. The example showcases the ability to handle dynamic values in requests, such as submitting and displaying a user with a specific ID, demonstrating the flexibility of Laravel routing.']}, {'end': 2236.84, 'start': 1931.66, 'title': 'Laravel controllers tutorial', 'summary': "Discusses how to work with controllers in a laravel project, including the installation of atom terminal, issuing artisan commands to create controllers, and the naming convention for controller classes. it also demonstrates the successful creation of a 'pages' controller.", 'duration': 305.18, 'highlights': ['The chapter discusses how to work with controllers in a Laravel project It covers the main topic of the tutorial, emphasizing the focus on working with controllers in a Laravel project.', 'Installation of Atom terminal for issuing artisan commands It highlights the process of installing the Atom terminal to issue artisan commands, enabling the creation of controllers within the Laravel project.', 'Issuing artisan commands to create controllers It explains the process of using artisan commands to automatically create controllers, demonstrating the practical implementation within the tutorial.', 'Naming convention for controller classes It explains the naming convention for controller classes, emphasizing the requirement for capitalizing the first letter of each word in the controller name.', "Successful creation of a 'pages' controller It showcases the successful creation of a 'pages' controller within the Laravel project, providing a tangible outcome of the demonstrated process."]}, {'end': 2771.761, 'start': 2238.56, 'title': 'Laravel controllers and blade templating', 'summary': 'Discusses creating a pages controller, defining routes, returning views, and using blade templating in laravel. it covers setting up controllers, defining functions for about and services, and switching to blade templating from html.', 'duration': 533.201, 'highlights': ['Creating a pages controller and defining functions for about and services The transcript covers creating a pages controller and defining functions for about and services, demonstrating the process of setting up controllers and defining specific functions for different pages.', 'Switching to blade templating from HTML for reusability and code reduction The chapter emphasizes the importance of using blade templating over HTML for reusability and code reduction, indicating a transition towards blade templating from HTML for about, services, and index.php files.', 'Discussing the usage and benefits of blade templates The transcript mentions the upcoming discussion of blade templates, hinting at a comprehensive overview of the usage and benefits of blade templates with a focus on reusing and reducing code.']}, {'end': 3469.847, 'start': 2771.761, 'title': 'Using layouts in laravel', 'summary': 'Demonstrates how to use layout files to minimize repeating html in laravel by creating a new folder for layouts, creating a layout file, extending the layout file, passing values to blade templates, and passing data as an array of values, with examples and demonstrations.', 'duration': 698.086, 'highlights': ['Demonstrating the use of layout files to minimize repeating HTML The speaker demonstrates creating a new folder for layouts and a layout file to minimize repeating HTML in Laravel, enhancing code reusability and maintainability.', "Extending the layout file and passing values to blade templates The speaker explains the process of extending the layout file and passing values to blade templates, showcasing how to use 'extends' and 'yield' keywords to minimize repeating HTML and customize content.", 'Passing data as an array of values and iterating through the array The chapter includes a demonstration of passing data as an array of values and iterating through the array in Laravel, enhancing the flexibility of passing multiple data to blade templates and accessing it using conditional logic.']}], 'duration': 1996.619, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy81473228.jpg', 'highlights': ['Laravel uses the blade templating system for dynamic HTML generation, including if statements, loops, and variables.', 'Creating routes for pages like about, home, and contact using a pages controller.', "Demonstrating the ease of working with Laravel routes and views, with an example of displaying 'hello world' on the homepage.", 'Handling dynamic values in requests, with an example of submitting and displaying a user with a specific ID.', 'The chapter discusses how to work with controllers in a Laravel project.', 'Installation of Atom terminal for issuing artisan commands.', 'Issuing artisan commands to create controllers.', 'Naming convention for controller classes.', "Successful creation of a 'pages' controller.", 'Creating a pages controller and defining functions for about and services.', 'Switching to blade templating from HTML for reusability and code reduction.', 'Discussing the usage and benefits of blade templates.', 'Demonstrating the use of layout files to minimize repeating HTML.', 'Extending the layout file and passing values to blade templates.', 'Passing data as an array of values and iterating through the array.']}, {'end': 4204.194, 'segs': [{'end': 3522.004, 'src': 'embed', 'start': 3469.927, 'weight': 0, 'content': [{'end': 3489.253, 'text': 'So add for each and then the services as service and we need to add also the end of our for each and of course inside this for each.', 'start': 3469.927, 'duration': 19.326}, {'end': 3496.359, 'text': 'we need to like if we need to add the li for our service, something like that,', 'start': 3489.253, 'duration': 7.106}, {'end': 3508.627, 'text': 'and then we need to get the servers itself And we need to add the ul for our or inside this if statement.', 'start': 3496.359, 'duration': 12.268}, {'end': 3511.068, 'text': 'So ul here.', 'start': 3509.487, 'duration': 1.581}, {'end': 3522.004, 'text': "Save and let's try to preview our page.", 'start': 3517.682, 'duration': 4.322}], 'summary': 'Adding services and elements to the page.', 'duration': 52.077, 'max_score': 3469.927, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy83469927.jpg'}, {'end': 3580.18, 'src': 'embed', 'start': 3549.921, 'weight': 1, 'content': [{'end': 3558.548, 'text': "So if you're a Windows user or Mac OS X user, so there's available installer for you.", 'start': 3549.921, 'duration': 8.627}, {'end': 3565.593, 'text': 'And you can have the 32-bit, 64-bit options.', 'start': 3559.348, 'duration': 6.245}, {'end': 3570.297, 'text': "But we'll just try to install it by using this Windows installer.", 'start': 3566.554, 'duration': 3.743}, {'end': 3577.119, 'text': 'install it in our local machine.', 'start': 3572.077, 'duration': 5.042}, {'end': 3580.18, 'text': 'so after downloading we can just install it right away,', 'start': 3577.119, 'duration': 3.061}], 'summary': 'Installer available for windows and mac os x, offering 32-bit and 64-bit options for easy installation.', 'duration': 30.259, 'max_score': 3549.921, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy83549921.jpg'}, {'end': 3644.226, 'src': 'embed', 'start': 3611.247, 'weight': 3, 'content': [{'end': 3618.749, 'text': "and then next and there's an option here to automatically install the necessary tools,", 'start': 3611.247, 'duration': 7.502}, {'end': 3627.751, 'text': "and there's a note that this will also install the Chocolaty and the script will pop up in a new window after installation process.", 'start': 3618.749, 'duration': 9.002}, {'end': 3636.293, 'text': "so to save us from trouble, so let's just enable this and then next and install,", 'start': 3627.751, 'duration': 8.542}, {'end': 3644.226, 'text': "and then we'll just wait for a few seconds to enable the node.js installation to complete.", 'start': 3636.293, 'duration': 7.933}], 'summary': 'Install necessary tools and enable chocolaty for node.js installation.', 'duration': 32.979, 'max_score': 3611.247, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy83611247.jpg'}, {'end': 3989.009, 'src': 'heatmap', 'start': 3705.884, 'weight': 0.875, 'content': [{'end': 3718.289, 'text': "and then we're just going to wait for a few seconds to allow the installation to complete and we should be able to incorporate the necessary libraries for our laravel ui.", 'start': 3705.884, 'duration': 12.405}, {'end': 3724.253, 'text': 'So, as you can see, this will also install the bootstrap in our Laravel project,', 'start': 3718.849, 'duration': 5.404}, {'end': 3734.2, 'text': 'so we can already use that if we have a successful installation for our Laravel UI.', 'start': 3724.253, 'duration': 9.947}, {'end': 3745.948, 'text': 'and now that the installation for our Laravel UI has been completed, so we need to run also, or to include also the dependencies for our OAuth.', 'start': 3736.064, 'duration': 9.884}, {'end': 3759.054, 'text': 'so this will include the login and register view, so PHP artisan and then UI view dash dash OAuth, and this will install the login register.', 'start': 3745.948, 'duration': 13.106}, {'end': 3768.221, 'text': 'and after that we need to run the command npm install to compile the CSS and other dependencies of our project.', 'start': 3759.774, 'duration': 8.447}, {'end': 3781.07, 'text': 'so we should be able to see the login, the register and other views included for our UI and view OAuth or OAuth dependencies.', 'start': 3768.221, 'duration': 12.849}, {'end': 3785.774, 'text': "so I'll try to show you that after this installation.", 'start': 3781.07, 'duration': 4.704}, {'end': 3791.422, 'text': "So we're just going to wait for a few seconds for it to complete.", 'start': 3786.775, 'duration': 4.647}, {'end': 3795.347, 'text': 'And then we should be able to see the changes in our browser.', 'start': 3792.323, 'duration': 3.024}, {'end': 3804.771, 'text': "By the way, if you can see here at the top, there's a prompt here that the layout app blade.php view already exists.", 'start': 3795.925, 'duration': 8.846}, {'end': 3811.616, 'text': 'So do you want to replace it? So in my case, I have set or I have set it to end or no.', 'start': 3804.911, 'duration': 6.705}, {'end': 3821.622, 'text': 'But you can try to accept it or to replace the existing layout of our app.blade.php.', 'start': 3812.196, 'duration': 9.426}, {'end': 3830.533, 'text': 'So you can Try to answer yes for that, and then the layout of our project will be changed according to this update,', 'start': 3821.663, 'duration': 8.87}, {'end': 3840.024, 'text': "and this layout will also include the OAuth, the login and then the register, as I've mentioned before.", 'start': 3830.533, 'duration': 9.491}, {'end': 3849.691, 'text': 'And as you can see here, I have here the layout view already exists and do you want to replace it? And I just answered why or yes for that.', 'start': 3840.604, 'duration': 9.087}, {'end': 3857.777, 'text': 'So I just want to replace the existing app.blade.php that we have been working on in the previous tutorial.', 'start': 3850.431, 'duration': 7.346}, {'end': 3866.323, 'text': 'and after that you need to run also the command npm run dev to compile all the necessary assets that we have.', 'start': 3858.437, 'duration': 7.886}, {'end': 3878.491, 'text': 'so here we have the app.css and app.js and after running this command we should be able to see the changes of our project.', 'start': 3866.323, 'duration': 12.168}, {'end': 3883.294, 'text': "so I'm going to show you the project now and what it looks like.", 'start': 3878.491, 'duration': 4.803}, {'end': 3887.477, 'text': 'so this is our project should look right now and, as you can see,', 'start': 3884.435, 'duration': 3.042}, {'end': 3902.444, 'text': 'we have here the css folder that contains the app.css or generated app.css that contains all twitter bootstrap styles necessary to apply to our project,', 'start': 3887.477, 'duration': 14.967}, {'end': 3914.211, 'text': 'and we also have the js file or js directory with the app.js file, as you can see, with all the scripts needed for our project.', 'start': 3902.444, 'duration': 11.767}, {'end': 3922.575, 'text': 'so this is the compiled versions of all the javascripts or scripts for our project and, as you can see here, the resources we have here,', 'start': 3914.211, 'duration': 8.364}, {'end': 3927.758, 'text': 'the app.js and the bootstrap.js.', 'start': 3922.575, 'duration': 5.183}, {'end': 3933.442, 'text': "and, as i've mentioned before, we also included the oath files.", 'start': 3927.758, 'duration': 5.684}, {'end': 3949.357, 'text': 'so it should be the login blade.php, register blade.php and verify that blade.php and of course, we also have this files for our passwords.', 'start': 3933.442, 'duration': 15.915}, {'end': 3954.883, 'text': "so confirm, email and reset and now let's try to preview our code in our browser.", 'start': 3949.357, 'duration': 5.526}, {'end': 3961.505, 'text': 'so this is the home page of our project right now and if you try to go to about section.', 'start': 3955.183, 'duration': 6.322}, {'end': 3972.929, 'text': 'so we can still see the about us and then this is the about page text and of course we can also see the services with all the services included the web design,', 'start': 3961.505, 'duration': 11.424}, {'end': 3974.37, 'text': 'programming and seo.', 'start': 3972.929, 'duration': 1.441}, {'end': 3980.337, 'text': 'So these are the pages that we have added the login and then register.', 'start': 3974.83, 'duration': 5.507}, {'end': 3981.739, 'text': 'If you try to click on that.', 'start': 3980.398, 'duration': 1.341}, {'end': 3989.009, 'text': 'So as you can see we have here the redemade login form and the same thing with our register.', 'start': 3982.26, 'duration': 6.749}], 'summary': 'Installation of laravel ui with oauth and bootstrap, and compilation of assets completed.', 'duration': 283.125, 'max_score': 3705.884, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy83705884.jpg'}, {'end': 3768.221, 'src': 'embed', 'start': 3736.064, 'weight': 2, 'content': [{'end': 3745.948, 'text': 'and now that the installation for our Laravel UI has been completed, so we need to run also, or to include also the dependencies for our OAuth.', 'start': 3736.064, 'duration': 9.884}, {'end': 3759.054, 'text': 'so this will include the login and register view, so PHP artisan and then UI view dash dash OAuth, and this will install the login register.', 'start': 3745.948, 'duration': 13.106}, {'end': 3768.221, 'text': 'and after that we need to run the command npm install to compile the CSS and other dependencies of our project.', 'start': 3759.774, 'duration': 8.447}], 'summary': 'Completed laravel ui installation, added oauth dependencies, and compiled css', 'duration': 32.157, 'max_score': 3736.064, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy83736064.jpg'}], 'start': 3469.927, 'title': 'Laravel service and asset management', 'summary': 'Covers adding services in a for each loop and compiling assets in a laravel project. it includes the types of services, asset compilation, and step-by-step installation process of node.js and laravel ui.', 'chapters': [{'end': 3549.281, 'start': 3469.927, 'title': 'Adding services and compiling assets in laravel', 'summary': 'Covers adding services in a for each loop and compiling assets in a laravel project, including the types of services and the need to download node.js for asset compilation.', 'duration': 79.354, 'highlights': ['The chapter covers adding services in a for each loop and compiling assets in a Laravel project, including the types of services and the need to download Node.js for asset compilation.', 'Data from the pages controller includes the web design, programming, and SEO as services.', 'The process involves adding services in a for each loop and compiling assets in a Laravel project.', 'It is necessary to download Node.js before proceeding with asset compilation.']}, {'end': 4204.194, 'start': 3549.921, 'title': 'Node.js and laravel ui installation', 'summary': 'Outlines the step-by-step installation process of node.js and laravel ui, including enabling options, checking versions, incorporating dependencies, and modifying layouts.', 'duration': 654.273, 'highlights': ['Node.js and npm installation Describes the step-by-step process of installing Node.js and npm on Windows or Mac OS X, enabling options, and checking the installed versions.', 'Laravel UI and Bootstrap installation Details the installation process of Laravel UI, including incorporating Bootstrap and necessary libraries, and checking for successful installation.', 'Incorporating OAuth dependencies Explains the process of including OAuth dependencies for login and register views in Laravel, followed by the compilation of CSS and other project dependencies.', "Layout modification and navigation links addition Demonstrates modifying the layout by adding navigation links for 'about' and 'services', aligning them with existing links, and adding classes to properly position the content."]}], 'duration': 734.267, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy83469927.jpg', 'highlights': ['Describes the step-by-step process of installing Node.js and npm on Windows or Mac OS X, enabling options, and checking the installed versions.', 'Details the installation process of Laravel UI, including incorporating Bootstrap and necessary libraries, and checking for successful installation.', 'Explains the process of including OAuth dependencies for login and register views in Laravel, followed by the compilation of CSS and other project dependencies.', "Demonstrates modifying the layout by adding navigation links for 'about' and 'services', aligning them with existing links, and adding classes to properly position the content.", 'The chapter covers adding services in a for each loop and compiling assets in a Laravel project, including the types of services and the need to download Node.js for asset compilation.']}, {'end': 5529.568, 'segs': [{'end': 4286.04, 'src': 'embed', 'start': 4260.293, 'weight': 6, 'content': [{'end': 4267.243, 'text': "Now we don't want to create tables here because we want our Laravel project to automatically create tables for us.", 'start': 4260.293, 'duration': 6.95}, {'end': 4276.436, 'text': "So let's go back to our code editor and make some changes and add controllers, add models for our project.", 'start': 4267.784, 'duration': 8.652}, {'end': 4279.398, 'text': "And in here, let's try to open our terminal.", 'start': 4277.177, 'duration': 2.221}, {'end': 4282.139, 'text': "So I'll shift T.", 'start': 4279.478, 'duration': 2.661}, {'end': 4286.04, 'text': 'So this will open up our integrated terminal for our Atom code editor.', 'start': 4282.139, 'duration': 3.901}], 'summary': 'Using laravel to auto-generate tables and adding controllers and models.', 'duration': 25.747, 'max_score': 4260.293, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy84260293.jpg'}, {'end': 4411.493, 'src': 'embed', 'start': 4376.503, 'weight': 5, 'content': [{'end': 4384.286, 'text': "we're going to use a model and try to generate a post model.", 'start': 4376.503, 'duration': 7.783}, {'end': 4393.61, 'text': 'So as you can see, we need to or I think the best way here is to use a singular form of post.', 'start': 4384.406, 'duration': 9.204}, {'end': 4397.072, 'text': 'So here we are using post and then enter.', 'start': 4393.75, 'duration': 3.322}, {'end': 4404.783, 'text': "And before that, we need to add slash m because we're going to use the migrations.", 'start': 4397.833, 'duration': 6.95}, {'end': 4409.85, 'text': 'So this will enable us to generate the table from our Laravel project.', 'start': 4405.644, 'duration': 4.206}, {'end': 4411.493, 'text': 'So dash m and then enter.', 'start': 4409.87, 'duration': 1.623}], 'summary': 'Using model to generate a singular form post in laravel, enabling table generation.', 'duration': 34.99, 'max_score': 4376.503, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy84376503.jpg'}, {'end': 4650.98, 'src': 'heatmap', 'start': 4514.645, 'weight': 0.94, 'content': [{'end': 4525.59, 'text': 'So save this and as you can see here, if you try to go to migrations, we also have the migration or create users table, migration for our users.', 'start': 4514.645, 'duration': 10.945}, {'end': 4534.735, 'text': 'So including all the attributes ID, name, email, password and all other attributes included here.', 'start': 4526.271, 'duration': 8.464}, {'end': 4541.707, 'text': 'Now we will make few changes here before we run the migration and create our table.', 'start': 4536.283, 'duration': 5.424}, {'end': 4545.329, 'text': "So let's try to go to our ENB file.", 'start': 4542.187, 'duration': 3.142}, {'end': 4550.342, 'text': 'to input our database details.', 'start': 4546.88, 'duration': 3.462}, {'end': 4555.185, 'text': 'so we have here the database, the username and the password.', 'start': 4550.342, 'duration': 4.843}, {'end': 4564.871, 'text': 'so i think the username and password are already set, but we have to update the database name, which is in our case.', 'start': 4555.185, 'duration': 9.686}, {'end': 4568.113, 'text': 'we have used the pk project.', 'start': 4564.871, 'duration': 3.242}, {'end': 4570.175, 'text': 'there we go and then save this.', 'start': 4568.113, 'duration': 2.062}, {'end': 4583.593, 'text': "So before we run the migration command and generate the tables, I'm going to show you a quick change that I made in providers appserversprovider.php.", 'start': 4572.429, 'duration': 11.164}, {'end': 4595.038, 'text': 'So under provider folder or providers directory and then appserversprovider.php, make sure to import the illuminate support passage and then schema.', 'start': 4584.454, 'duration': 10.584}, {'end': 4607.722, 'text': "inside this function boot, make sure to add this schema default string land, which is 191, and if you have added that already, we're good to go.", 'start': 4596.658, 'duration': 11.064}, {'end': 4613.283, 'text': "and we're now going to issue the PHP artisan migrate command.", 'start': 4607.722, 'duration': 5.561}, {'end': 4622.626, 'text': 'so PHP artisan and then migrate.', 'start': 4613.283, 'duration': 9.343}, {'end': 4630.686, 'text': 'and if you try to check our PHP, my admin and refresh our project or pk project.', 'start': 4622.626, 'duration': 8.06}, {'end': 4638.571, 'text': 'so as you can see, we have here all the tables generated coming from our project or pk project.', 'start': 4630.686, 'duration': 7.885}, {'end': 4641.013, 'text': 'so we have here the post.', 'start': 4638.571, 'duration': 2.442}, {'end': 4650.98, 'text': 'inside this post we have the id, which is the auto generated id, and the title, which is the length, is 191.', 'start': 4641.013, 'duration': 9.967}], 'summary': 'Configuring and running database migration for user table with specific attributes and implementing necessary changes in providers appserverprovider.php before generating tables using php artisan migrate command.', 'duration': 136.335, 'max_score': 4514.645, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy84514645.jpg'}, {'end': 4630.686, 'src': 'embed', 'start': 4596.658, 'weight': 8, 'content': [{'end': 4607.722, 'text': "inside this function boot, make sure to add this schema default string land, which is 191, and if you have added that already, we're good to go.", 'start': 4596.658, 'duration': 11.064}, {'end': 4613.283, 'text': "and we're now going to issue the PHP artisan migrate command.", 'start': 4607.722, 'duration': 5.561}, {'end': 4622.626, 'text': 'so PHP artisan and then migrate.', 'start': 4613.283, 'duration': 9.343}, {'end': 4630.686, 'text': 'and if you try to check our PHP, my admin and refresh our project or pk project.', 'start': 4622.626, 'duration': 8.06}], 'summary': "Add default schema 'land' with id 191 and run php artisan migrate command.", 'duration': 34.028, 'max_score': 4596.658, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy84596658.jpg'}, {'end': 5176.606, 'src': 'embed', 'start': 5143.291, 'weight': 7, 'content': [{'end': 5150.438, 'text': 'we can see that all the functions that we have listed earlier has been generated successfully.', 'start': 5143.291, 'duration': 7.147}, {'end': 5163.983, 'text': "so we have here the function index, So display a listing of the resource, and some of the functions here don't need or doesn't need the parameters,", 'start': 5150.438, 'duration': 13.545}, {'end': 5171.084, 'text': 'but there are also functions that need the parameters.', 'start': 5163.983, 'duration': 7.101}, {'end': 5173.305, 'text': 'So say for example this one we have the create.', 'start': 5171.104, 'duration': 2.201}, {'end': 5176.606, 'text': 'So show the form for creating a new resource.', 'start': 5173.885, 'duration': 2.721}], 'summary': 'Successful generation of listed functions with different parameter requirements.', 'duration': 33.315, 'max_score': 5143.291, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy85143291.jpg'}, {'end': 5444.969, 'src': 'heatmap', 'start': 5177.686, 'weight': 0.702, 'content': [{'end': 5180.511, 'text': 'And then the store has this parameter request.', 'start': 5177.686, 'duration': 2.825}, {'end': 5187.383, 'text': "And we're going to define some of the logic later on inside this function.", 'start': 5181.733, 'duration': 5.65}, {'end': 5189.187, 'text': 'And also we have the show.', 'start': 5188.004, 'duration': 1.183}, {'end': 5190.349, 'text': 'So it has the ID.', 'start': 5189.467, 'duration': 0.882}, {'end': 5196.027, 'text': 'that will identify the record that we want to show here.', 'start': 5192.665, 'duration': 3.362}, {'end': 5197.448, 'text': 'and also we have the edit.', 'start': 5196.027, 'duration': 1.421}, {'end': 5210.716, 'text': 'the same thing, it has the id parameter and also we have the update that requires two parameters the request and, of course, the id of the resource,', 'start': 5197.448, 'duration': 13.268}, {'end': 5219.661, 'text': 'and, of course, the destroy function that will enable us to delete based on the id of the resource.', 'start': 5210.716, 'duration': 8.945}, {'end': 5230.773, 'text': 'so now that we have laid out all these functions in our controller, we need to have a route for each functions right.', 'start': 5219.941, 'duration': 10.832}, {'end': 5242.883, 'text': "so we're going to add or we're going to go to the web.php of our routes and, as you can see, we have here the route that we have currently.", 'start': 5230.773, 'duration': 12.11}, {'end': 5250.186, 'text': "and if you try to go to our command or our terminal, let's try to list our routes for now.", 'start': 5242.883, 'duration': 7.303}, {'end': 5255.489, 'text': 'so php, artisan and then route and then list.', 'start': 5250.186, 'duration': 5.303}, {'end': 5262.459, 'text': 'so these are the currently generated routes for our project.', 'start': 5257.037, 'duration': 5.422}, {'end': 5273.963, 'text': 'so, as you can see, we have here the login, the home, the password, the register and all other function or all other routes that we have set.', 'start': 5262.459, 'duration': 11.504}, {'end': 5280.326, 'text': "and now let's try to add a route for all our functions,", 'start': 5273.963, 'duration': 6.363}, {'end': 5290.311, 'text': 'because it is a kind of pain in the ass if you try to generate individual routes for our functions right.', 'start': 5280.326, 'duration': 9.985}, {'end': 5296.975, 'text': "so let's try to generate route for all our resource in our post controller.", 'start': 5290.311, 'duration': 6.664}, {'end': 5316.482, 'text': 'so route and then resource, and of course the name will be post and of course the name of our controller, which is post controller.', 'start': 5296.975, 'duration': 19.507}, {'end': 5328.741, 'text': "and then we're going to save this for now save and then let's go back to our terminal and try to run another one um, php,", 'start': 5316.482, 'duration': 12.259}, {'end': 5335.366, 'text': 'artisan and then route and then list.', 'start': 5328.741, 'duration': 6.625}, {'end': 5343.793, 'text': "so let's try to find our resource or generated routes for our post controller.", 'start': 5335.366, 'duration': 8.427}, {'end': 5350.798, 'text': 'so, as you can see, we have here all the the routes related to our post controller.', 'start': 5343.793, 'duration': 7.005}, {'end': 5356.543, 'text': 'so we have here the post store, Post index, post create,', 'start': 5350.798, 'duration': 5.745}, {'end': 5367.053, 'text': 'post show and of course post update and all other functions or all other routes that we need in our post controller.', 'start': 5356.543, 'duration': 10.51}, {'end': 5372.906, 'text': 'In the previous video, we have worked with the controller or post controllers.', 'start': 5367.702, 'duration': 5.204}, {'end': 5374.186, 'text': 'We have added the routes.', 'start': 5372.986, 'duration': 1.2}, {'end': 5379.41, 'text': "So we've tried to open the web.php in our routes folder.", 'start': 5374.707, 'duration': 4.703}, {'end': 5390.017, 'text': 'So as you can see, we have defined here route and then the resource and then the name is post and our controller which is post controller.', 'start': 5379.87, 'duration': 10.147}, {'end': 5395.16, 'text': 'And then we also added or generated the post controller class.', 'start': 5390.537, 'duration': 4.623}, {'end': 5406.244, 'text': 'So, as you can see here, we have here all the functions that we need in order for us to work with our CRUD or create, read,', 'start': 5396.161, 'duration': 10.083}, {'end': 5409.985, 'text': 'update and delete functionality of our project.', 'start': 5406.244, 'duration': 3.741}, {'end': 5418.448, 'text': "And in this video we're going to continue working with our POST controller and try to fetch data coming from our database and display it on our browser.", 'start': 5410.465, 'duration': 7.983}, {'end': 5429.797, 'text': "By the way, guys, if you try to open our post model so, as you can see, we haven't done much here and if you want to change the table name,", 'start': 5419.688, 'duration': 10.109}, {'end': 5433.32, 'text': 'you can change it here, and also you can change the primary key.', 'start': 5429.797, 'duration': 3.523}, {'end': 5444.969, 'text': 'So, for example, you want to change the table name here, so for table name, and then protected.', 'start': 5433.8, 'duration': 11.169}], 'summary': 'Creating routes for post controller functions and fetching data from the database for display.', 'duration': 267.283, 'max_score': 5177.686, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy85177686.jpg'}, {'end': 5374.186, 'src': 'embed', 'start': 5296.975, 'weight': 0, 'content': [{'end': 5316.482, 'text': 'so route and then resource, and of course the name will be post and of course the name of our controller, which is post controller.', 'start': 5296.975, 'duration': 19.507}, {'end': 5328.741, 'text': "and then we're going to save this for now save and then let's go back to our terminal and try to run another one um, php,", 'start': 5316.482, 'duration': 12.259}, {'end': 5335.366, 'text': 'artisan and then route and then list.', 'start': 5328.741, 'duration': 6.625}, {'end': 5343.793, 'text': "so let's try to find our resource or generated routes for our post controller.", 'start': 5335.366, 'duration': 8.427}, {'end': 5350.798, 'text': 'so, as you can see, we have here all the the routes related to our post controller.', 'start': 5343.793, 'duration': 7.005}, {'end': 5356.543, 'text': 'so we have here the post store, Post index, post create,', 'start': 5350.798, 'duration': 5.745}, {'end': 5367.053, 'text': 'post show and of course post update and all other functions or all other routes that we need in our post controller.', 'start': 5356.543, 'duration': 10.51}, {'end': 5372.906, 'text': 'In the previous video, we have worked with the controller or post controllers.', 'start': 5367.702, 'duration': 5.204}, {'end': 5374.186, 'text': 'We have added the routes.', 'start': 5372.986, 'duration': 1.2}], 'summary': 'Generated routes for post controller include post store, index, create, show, and update.', 'duration': 77.211, 'max_score': 5296.975, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy85296975.jpg'}], 'start': 4204.194, 'title': 'Setting up phpmyadmin, laravel project, and populating database', 'summary': 'Covers setting up phpmyadmin to create a new database, setting up a laravel project including creating controllers and models, generating post controller and model, modifying migration files, running migration command, and populating the database with instances of the post model.', 'chapters': [{'end': 4258.546, 'start': 4204.194, 'title': 'Setting up phpmyadmin and creating a database', 'summary': "Covers the process of setting up phpmyadmin, a tool included in wamp server, to create a new database named 'pkproject'.", 'duration': 54.352, 'highlights': ['PHPMyAdmin is included in the installation process of WAMP server and is necessary for adding a database.', "The process involves clicking 'new' and naming the database as 'pkproject' before creating it."]}, {'end': 4660.245, 'start': 4260.293, 'title': 'Setting up laravel project', 'summary': 'Covers setting up a laravel project including creating controllers and models using php artisan commands, generating a post controller and model, modifying migration files to add attributes like title and body, and updating database details in the .env file, followed by running the migration command to generate tables, resulting in successful creation of post table with attributes like id, title, body, and timestamps.', 'duration': 399.952, 'highlights': ["Creating a post controller and model The chapter demonstrates using PHP artisan commands to generate a post controller and model, which includes issuing the command 'PHP artisan make:controller post controller' and 'PHP artisan make:model post -m', resulting in the successful creation of both controller and model.", "Modifying migration files to add attributes like title and body The transcript highlights modifying migration files to add attributes like title and body to the post table, using the 'table' and 'string' functions to define the attributes, and selecting 'medium text' for the body attribute, ensuring that the necessary changes are made before running the migration command.", 'Updating database details in the .env file The speaker outlines the process of updating the database details, specifically the database name, in the .env file to ensure that the correct database is used for the Laravel project, emphasizing the importance of this step before running the migration command.', "Running the migration command to generate tables The chapter illustrates the execution of the 'PHP artisan migrate' command to generate tables, confirming the successful creation of the post table with attributes such as id, title, body, and timestamps, and verifying the tables in PHPMyAdmin."]}, {'end': 5069.249, 'start': 4661.406, 'title': 'Fetching data with elucrent and populating database', 'summary': 'Discusses using tinker commands to populate the database, creating instances of the post model, adding posts to the database, and editing the post controller in a laravel project.', 'duration': 407.843, 'highlights': ['Using Tinker commands to add posts to the database, returning true for successful saves of post data, and verifying the presence of the added posts in the database.', 'Creating instances of the post model and setting titles and body for posts, resulting in the successful addition of two posts to the database.', 'Discussing the need for functions like index, create, store, edit, update, show, and delete in the post controller to manage CRUD operations in a Laravel project.']}, {'end': 5529.568, 'start': 5069.249, 'title': 'Generating post controller and routes', 'summary': 'Covers the generation of a post controller with resource functions, creating routes for the controller, and modifying the post model to customize table name, primary key, and timestamps.', 'duration': 460.319, 'highlights': ['The post controller is generated successfully with resource functions for create, read, update, and delete operations.', "Routes for the post controller are added using the 'route' and 'resource' commands to avoid manual generation of individual routes.", 'Modifying the post model allows customization of the table name, primary key, and inclusion of timestamps in the database.']}], 'duration': 1325.374, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy84204194.jpg', 'highlights': ['Covers setting up phpmyadmin to create a new database, necessary for adding a database in WAMP server installation.', 'Creating a post controller and model using PHP artisan commands to generate post controller and model.', 'Modifying migration files to add attributes like title and body to the post table, ensuring necessary changes are made before running the migration command.', 'Updating database details in the .env file to ensure the correct database is used for the Laravel project.', 'Running the migration command to generate tables, confirming the successful creation of the post table with attributes such as id, title, body, and timestamps.', 'Using Tinker commands to add posts to the database, returning true for successful saves of post data, and verifying the presence of the added posts in the database.', 'Creating instances of the post model and setting titles and body for posts, resulting in the successful addition of two posts to the database.', 'Discussing the need for functions like index, create, store, edit, update, show, and delete in the post controller to manage CRUD operations in a Laravel project.', 'The post controller is generated successfully with resource functions for create, read, update, and delete operations.', "Routes for the post controller are added using the 'route' and 'resource' commands to avoid manual generation of individual routes.", 'Modifying the post model allows customization of the table name, primary key, and inclusion of timestamps in the database.']}, {'end': 6972.934, 'segs': [{'end': 6093.831, 'src': 'embed', 'start': 6062.234, 'weight': 8, 'content': [{'end': 6070.677, 'text': 'in which we already iterated the post coming from our database and also making our title as link,', 'start': 6062.234, 'duration': 8.443}, {'end': 6079.421, 'text': 'so that we could click on that link and then be redirected to another page in which we can see the full details of that particular post.', 'start': 6070.677, 'duration': 8.744}, {'end': 6084.885, 'text': 'And also we have added the created at or written on date.', 'start': 6080.081, 'duration': 4.804}, {'end': 6093.831, 'text': 'And then I have realized that we use the class well which is not included in Bootstrap anymore.', 'start': 6085.765, 'duration': 8.066}], 'summary': 'Iterated database posts, created title links, added creation date, noted class not in bootstrap.', 'duration': 31.597, 'max_score': 6062.234, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy86062234.jpg'}, {'end': 6198.886, 'src': 'embed', 'start': 6159.387, 'weight': 0, 'content': [{'end': 6163.009, 'text': "So let's go back here in our index.blade.php.", 'start': 6159.387, 'duration': 3.622}, {'end': 6173.255, 'text': "And as you can see, we have here the card, right? But instead of using h3, I think we're going to use the ul for now.", 'start': 6163.069, 'duration': 10.186}, {'end': 6178.177, 'text': 'So this is coming from our bootstrap integration also.', 'start': 6174.035, 'duration': 4.142}, {'end': 6179.138, 'text': 'So ul.', 'start': 6178.257, 'duration': 0.881}, {'end': 6193.44, 'text': 'So inside this and it should have a class list group and then list group flush.', 'start': 6180.766, 'duration': 12.674}, {'end': 6195.162, 'text': 'There you go.', 'start': 6194.661, 'duration': 0.501}, {'end': 6198.886, 'text': 'And then of course inside here is the list item.', 'start': 6195.662, 'duration': 3.224}], 'summary': 'Modifying index.blade.php to use ul instead of h3 for card, integrating bootstrap styles.', 'duration': 39.499, 'max_score': 6159.387, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy86159387.jpg'}, {'end': 6354.259, 'src': 'embed', 'start': 6323.155, 'weight': 1, 'content': [{'end': 6329.741, 'text': 'And here you can see that this is the post one and this is the body of the post one.', 'start': 6323.155, 'duration': 6.586}, {'end': 6333.724, 'text': "So let's try to check and click on the post two.", 'start': 6330.261, 'duration': 3.463}, {'end': 6335.206, 'text': 'So there you go.', 'start': 6334.505, 'duration': 0.701}, {'end': 6338.889, 'text': 'The ID is two and the title is post two.', 'start': 6335.226, 'duration': 3.663}, {'end': 6347.054, 'text': "now let's take this further and try to beautify this instead of just seeing the array of data.", 'start': 6339.549, 'duration': 7.505}, {'end': 6354.259, 'text': "so let's go back to our code editor and instead of returning basically just the post,", 'start': 6347.054, 'duration': 7.205}], 'summary': 'Demonstration of accessing and displaying post data, including post id and title.', 'duration': 31.104, 'max_score': 6323.155, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy86323155.jpg'}, {'end': 6472.883, 'src': 'embed', 'start': 6435.143, 'weight': 10, 'content': [{'end': 6448.187, 'text': 'so we can just have or we can just use the post variable and then we can get the title from there and of course we can also get the other attributes.', 'start': 6435.143, 'duration': 13.044}, {'end': 6454.59, 'text': 'so the post body and of course the created on attribute.', 'start': 6448.187, 'duration': 6.403}, {'end': 6460.492, 'text': "so we're going to add it here by placing it inside a small tag.", 'start': 6454.59, 'duration': 5.902}, {'end': 6472.883, 'text': 'So this should be written on and of course, double curly braces and an opposed variable with the created on attribute.', 'start': 6461.332, 'duration': 11.551}], 'summary': 'Using the post variable, we can extract the title, post body, and created on attribute.', 'duration': 37.74, 'max_score': 6435.143, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy86435143.jpg'}, {'end': 6774.458, 'src': 'heatmap', 'start': 6633.849, 'weight': 0.753, 'content': [{'end': 6642.016, 'text': "so whatever we want to sort by, so say, for example, let's just comment this one out and try to copy that.", 'start': 6633.849, 'duration': 8.167}, {'end': 6658.667, 'text': 'so post, we can say here order by and then the attribute that you want your records to be sorted by, so title, say, for example, in this case title,', 'start': 6642.016, 'duration': 16.651}, {'end': 6670.675, 'text': 'and we can say descending, or D, E, S, E, and of course we need to say get and refresh here.', 'start': 6658.667, 'duration': 12.008}, {'end': 6677.944, 'text': 'So as you can see now the post tool is the first one to appear here instead of the post one.', 'start': 6672.156, 'duration': 5.788}, {'end': 6687.198, 'text': 'And if you try to go as sort by ascending, sort by title as ascending, there you go.', 'start': 6678.726, 'duration': 8.472}, {'end': 6696.488, 'text': 'Refresh So the post one is the first one to appear here in our post page.', 'start': 6689.341, 'duration': 7.147}, {'end': 6706.657, 'text': 'And actually you can also use the SQL commands or SQL statement in our controller to get all the posts coming from our database.', 'start': 6697.268, 'duration': 9.389}, {'end': 6709.898, 'text': 'So all you have to do is use the DB class.', 'start': 6707.197, 'duration': 2.701}, {'end': 6719.461, 'text': "So actually I'm going to show you that real quick because it is very easy to get all the records coming from our database by using the DB class.", 'start': 6710.378, 'duration': 9.083}, {'end': 6721.241, 'text': "So we're just going to use DB.", 'start': 6719.761, 'duration': 1.48}, {'end': 6735.396, 'text': "And of course, in here, we're going to comment that one out for now and use this as our variable for a post.", 'start': 6725.05, 'duration': 10.346}, {'end': 6739.759, 'text': 'So post and then equals the DB.', 'start': 6735.856, 'duration': 3.903}, {'end': 6750.064, 'text': 'And of course, the select function and our SQL command, which is select all from host.', 'start': 6741.079, 'duration': 8.985}, {'end': 6754.407, 'text': "And then let's just save this and refresh.", 'start': 6751.005, 'duration': 3.402}, {'end': 6759.185, 'text': 'So we still have all the posts coming from our database.', 'start': 6756.263, 'duration': 2.922}, {'end': 6760.867, 'text': 'So post one and post two.', 'start': 6759.225, 'duration': 1.642}, {'end': 6765.45, 'text': "And in this video, we're going to discuss forms and how to save data.", 'start': 6761.727, 'duration': 3.723}, {'end': 6774.458, 'text': 'And if you try to go to the create or pkproject.loc create.', 'start': 6766.391, 'duration': 8.067}], 'summary': 'Using sql commands to sort and retrieve posts from a database using the db class.', 'duration': 140.609, 'max_score': 6633.849, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy86633849.jpg'}, {'end': 6905.46, 'src': 'embed', 'start': 6878.343, 'weight': 9, 'content': [{'end': 6885.647, 'text': "that's because i think we need to specify first the post here before the create.", 'start': 6878.343, 'duration': 7.304}, {'end': 6895.253, 'text': 'so post and then create, and there you see the create post h1 that we have added in our create.', 'start': 6885.647, 'duration': 9.606}, {'end': 6895.834, 'text': 'that blade.', 'start': 6895.253, 'duration': 0.581}, {'end': 6897.335, 'text': 'that page we find.', 'start': 6895.834, 'duration': 1.501}, {'end': 6905.46, 'text': "so let's try to add a form into this page and we're going to use laravel collective for that.", 'start': 6897.335, 'duration': 8.125}], 'summary': 'Specify post before create, add form using laravel collective.', 'duration': 27.117, 'max_score': 6878.343, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy86878343.jpg'}], 'start': 5530.188, 'title': 'Displaying and updating database posts', 'summary': 'Demonstrates displaying data from a database on a web page, iterating and displaying database posts, updating post display and controller function, and adding post attributes and sorting posts, resulting in improved post presentation and functionality.', 'chapters': [{'end': 5752.613, 'start': 5530.188, 'title': 'Displaying database data on web page', 'summary': 'Demonstrates how to display data from a database onto a web page, including creating a view file, using eloquent to retrieve all posts, and resolving an error related to the post controller.', 'duration': 222.425, 'highlights': ['Creating a view file under post directory named index.blade.php and extending the layout from the layouts folder.', 'Using eloquent to retrieve all posts from the database using the post model and commenting out unnecessary code.', "Resolving a class not found error related to the post controller by including it using 'use app\\post;'"]}, {'end': 6158.747, 'start': 5752.633, 'title': 'Displaying database posts', 'summary': 'Covers iterating and displaying database posts using eloquent orm, including making post titles as links and adding the created at date. it also includes adding a blog link to the navigation bar.', 'duration': 406.114, 'highlights': ['Iterating and displaying the post titles and created dates The code iterates through the post array to display titles and created dates, with the capability to click on titles to view full details.', 'Adding a blog link to the navigation bar A blog link is added to the navigation bar to access all posts, providing improved navigation and access to the blog section.', 'Using Eloquent ORM to work with the post controller and model The video covers working with the post controller and post model, and the basic layout of index.blade.php for iterating posts and making titles as links.']}, {'end': 6435.143, 'start': 6159.387, 'title': 'Updating post display and controller function', 'summary': 'Discusses updating the post display by integrating ul and list items instead of h3 in the index.blade.php, and modifying the post controller function to return a single post and create a new view for post display, resulting in improved post presentation and functionality.', 'duration': 275.756, 'highlights': ['The chapter discusses updating the post display by integrating ul and list items instead of h3 in the index.blade.php The speaker explains the process of integrating ul and list group in place of h3 for the post display, providing a visual improvement to the post presentation.', 'Modifying the post controller function to return a single post and create a new view for post display The speaker explains the process of modifying the post controller function to return a single post and creating a new view for post display, enhancing the functionality of the post presentation.', 'Resulting in improved post presentation and functionality The changes made to the post display and controller function result in an improved presentation and functionality of the posts, enhancing the user experience and interaction with the posts.']}, {'end': 6972.934, 'start': 6435.143, 'title': 'Adding post attributes and sorting posts', 'summary': 'Covers adding post attributes, such as title, body, and creation date, implementing sorting of posts by title or id in ascending or descending order, and integrating forms using laravel collective for data saving.', 'duration': 537.791, 'highlights': ['Integrating post attributes such as title, body, and creation date The speaker discusses the process of adding attributes like title, body, and creation date to the post, along with implementing a back button and correcting a misspelling.', 'Sorting posts by title or ID in ascending or descending order Demonstrating how to sort posts by title or ID in ascending or descending order using the order by attribute, providing a visual demonstration of the sorted posts.', 'Using Laravel Collective for form integration and data saving Explaining the usage of Laravel Collective for integrating forms and saving data, including the process of installing dependencies and demonstrating the creation of a form for data saving.']}], 'duration': 1442.746, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy85530188.jpg', 'highlights': ['Demonstrates displaying data from a database on a web page and extending the layout from the layouts folder', 'Using eloquent to retrieve all posts from the database using the post model and commenting out unnecessary code', "Resolving a class not found error related to the post controller by including it using 'use app\\post;'", 'Iterating and displaying the post titles and created dates with the capability to click on titles to view full details', 'Adding a blog link to the navigation bar for improved navigation and access to the blog section', 'Using Eloquent ORM to work with the post controller and model for iterating posts and making titles as links', 'Updating the post display by integrating ul and list items instead of h3 in the index.blade.php for a visual improvement to the post presentation', 'Modifying the post controller function to return a single post and creating a new view for post display, resulting in improved post presentation and functionality', 'Integrating post attributes such as title, body, and creation date, along with implementing a back button and correcting a misspelling', 'Sorting posts by title or ID in ascending or descending order using the order by attribute, providing a visual demonstration of the sorted posts', 'Using Laravel Collective for form integration and data saving, including the process of installing dependencies and demonstrating the creation of a form for data saving']}, {'end': 7998.523, 'segs': [{'end': 7238.771, 'src': 'embed', 'start': 7199.711, 'weight': 1, 'content': [{'end': 7204.594, 'text': 'And then we can also do the same for our body.', 'start': 7199.711, 'duration': 4.883}, {'end': 7207.256, 'text': "So we're just going to copy this.", 'start': 7205.535, 'duration': 1.721}, {'end': 7211.979, 'text': "And instead of title, we're going to say body.", 'start': 7207.896, 'duration': 4.083}, {'end': 7214.821, 'text': 'And of course, this is for body also.', 'start': 7212.659, 'duration': 2.162}, {'end': 7218.683, 'text': 'And body too.', 'start': 7216.242, 'duration': 2.441}, {'end': 7221.605, 'text': 'And so with this placeholder.', 'start': 7219.684, 'duration': 1.921}, {'end': 7228.95, 'text': 'And of course, instead of text or using text, it should be text area.', 'start': 7224.207, 'duration': 4.743}, {'end': 7230.967, 'text': 'There you go.', 'start': 7230.387, 'duration': 0.58}, {'end': 7234.389, 'text': 'And save that and refresh our page.', 'start': 7231.968, 'duration': 2.421}, {'end': 7238.771, 'text': 'So we have a title and a body now.', 'start': 7235.289, 'duration': 3.482}], 'summary': 'Creating a body section with a text area. adding a body placeholder and updating the page.', 'duration': 39.06, 'max_score': 7199.711, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy87199711.jpg'}, {'end': 7499.618, 'src': 'embed', 'start': 7458.808, 'weight': 0, 'content': [{'end': 7483.11, 'text': "so let's just close first the if statement and we're going to define a for each here and let's just close the for each below and inside this for each is we're going to iterate the errors and this is an object.", 'start': 7458.808, 'duration': 24.302}, {'end': 7486.276, 'text': 'so all and then as error.', 'start': 7483.11, 'duration': 3.166}, {'end': 7499.618, 'text': "and of course we're going to define a very basic alert to our user by using the bootstrap alert element.", 'start': 7488.59, 'duration': 11.028}], 'summary': 'Defining for each loop to iterate errors for user alert.', 'duration': 40.81, 'max_score': 7458.808, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy87458808.jpg'}, {'end': 7590.148, 'src': 'embed', 'start': 7546.214, 'weight': 2, 'content': [{'end': 7562.228, 'text': "because I'm just laying out the messages or the feedback to our user if they have something or if there were errors during the process of submitting the information.", 'start': 7546.214, 'duration': 16.014}, {'end': 7580.443, 'text': 'so div, and then of course it should have the alert also alert success and the value of our session and success,', 'start': 7562.228, 'duration': 18.215}, {'end': 7590.148, 'text': "and then we're just going to do the same for our error coming from the session.", 'start': 7583.345, 'duration': 6.803}], 'summary': 'Developing a system to provide user feedback on information submission, including alerts for success and error handling.', 'duration': 43.934, 'max_score': 7546.214, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy87546214.jpg'}], 'start': 6972.934, 'title': 'Form inputs, submit button, error handling, and syntax highlighting in laravel', 'summary': 'Covers creating form inputs, adding submit button and modifying post controller, implementing error handling and user feedback, and adding post with syntax highlighting in laravel. it includes details on specifying form action, method, form labels, input fields, error messages, and syntax highlighting for blade templating.', 'chapters': [{'end': 7238.771, 'start': 6972.934, 'title': 'Creating form inputs in laravel', 'summary': 'Details how to create form inputs in a laravel template, including specifying the action, method, adding form labels and input fields with placeholders, and correcting input classes, resulting in a much-improved input appearance.', 'duration': 265.837, 'highlights': ['The chapter details how to create form inputs in a Laravel template, including specifying the action, method, adding form labels and input fields with placeholders, and correcting input classes, resulting in a much-improved input appearance.', 'The action is specified as the post controller and the store function inside the post controller class, with the method set to post, resulting in a functional form submission.', 'Form labels and input fields are added for both the title and body input, with appropriate placeholders, resulting in a structured form layout.', "Correction of the input classes from 'classes' to 'class' results in a much-improved input appearance, enhancing the overall user experience."]}, {'end': 7458.808, 'start': 7239.351, 'title': 'Adding submit button and modifying post controller', 'summary': 'Covers adding a submit button to the form with specified values, modifying the post controller to include logic for saving form data and validation, and configuring a template for error messages in the create page.', 'duration': 219.457, 'highlights': ['The chapter covers adding a submit button to the form with specified values, modifying the post controller to include logic for saving form data and validation, and configuring a template for error messages in the create page.', "The submit button is added to the form with the class 'btn btn-primary' to signify it is a button.", 'The post controller is modified to include logic for saving form data and validation, with specified rules for the title and body of the post.', 'A new file called messages.blade.php is created to configure a template for error messages, and it is included into app.blade.php to display error messages.']}, {'end': 7637.811, 'start': 7458.808, 'title': 'Implementing error handling and user feedback', 'summary': 'Explains the process of defining error alerts using the bootstrap alert element, iterating through errors, and displaying success or danger alerts based on session messages, to be included in the layout app.blade.php for user feedback.', 'duration': 179.003, 'highlights': ["Defining error alerts using the bootstrap alert element The chapter discusses defining a basic alert with the class 'alert' for error handling using the bootstrap alert element.", 'Iterating through errors and displaying alerts The chapter emphasizes the iteration through errors and displaying alerts for each error, providing user feedback during the process of submitting information.', 'Displaying success or danger alerts based on session messages The chapter explains the process of displaying success or danger alerts based on session messages, enhancing user experience and feedback during form submissions.', 'Inclusion of error handling in the layout app.blade.php The chapter instructs the inclusion of error handling and user feedback code inside the layout app.blade.php for seamless integration and user interaction.']}, {'end': 7998.523, 'start': 7638.511, 'title': 'Adding post and syntax highlighting', 'summary': 'Covers adding a new post and creating a link to the form, resulting in three records in the database. additionally, the process of adding a syntax highlighter for blade templating in laravel is detailed.', 'duration': 360.012, 'highlights': ['The process of adding a new post and creating a link to the form resulted in three records in the database, with post one, post two, and post three.', 'A working link to add a post was successfully created, allowing users to be redirected to the form upon clicking it.', 'The addition of a syntax highlighter for Blade templating in Laravel was detailed, ensuring easier readability of the blade syntax and scripts.']}], 'duration': 1025.589, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy86972934.jpg', 'highlights': ['The chapter details how to create form inputs in a Laravel template, including specifying the action, method, adding form labels and input fields with placeholders, and correcting input classes, resulting in a much-improved input appearance.', 'The post controller is modified to include logic for saving form data and validation, with specified rules for the title and body of the post.', "Defining error alerts using the bootstrap alert element The chapter discusses defining a basic alert with the class 'alert' for error handling using the bootstrap alert element.", 'The process of adding a new post and creating a link to the form resulted in three records in the database, with post one, post two, and post three.']}, {'end': 9070.245, 'segs': [{'end': 8558.924, 'src': 'embed', 'start': 8521.92, 'weight': 4, 'content': [{'end': 8537.604, 'text': 'so this is the second post body and this is updated by a certain user just to make sure, just to show that we have updated this particular post.', 'start': 8521.92, 'duration': 15.684}, {'end': 8543.434, 'text': "so submit, and so we're getting this exception.", 'start': 8537.604, 'duration': 5.83}, {'end': 8547.397, 'text': 'so the put method is not supported for this route.', 'start': 8543.434, 'duration': 3.963}, {'end': 8550.799, 'text': 'so i think we need to change something here.', 'start': 8547.397, 'duration': 3.402}, {'end': 8554.101, 'text': 'so oh, there you go.', 'start': 8550.799, 'duration': 3.302}, {'end': 8558.924, 'text': 'so instead of using store, it should be update here.', 'start': 8554.101, 'duration': 4.823}], 'summary': "User updated second post to use 'update' instead of 'store'.", 'duration': 37.004, 'max_score': 8521.92, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy88521920.jpg'}, {'end': 8737.418, 'src': 'embed', 'start': 8694.536, 'weight': 5, 'content': [{'end': 8701.398, 'text': 'pull right, because we want this to float right side of our edit link.', 'start': 8694.536, 'duration': 6.862}, {'end': 8709.22, 'text': "so pull right and then we're going to close this one.", 'start': 8701.398, 'duration': 7.822}, {'end': 8710.2, 'text': 'close our form.', 'start': 8709.22, 'duration': 0.98}, {'end': 8717.106, 'text': 'And in here we need to add two things.', 'start': 8713.804, 'duration': 3.302}, {'end': 8726.192, 'text': 'The method or the spoofing method that we have the same like for our edit.', 'start': 8718.667, 'duration': 7.525}, {'end': 8729.874, 'text': 'So we need to add hidden field.', 'start': 8726.812, 'duration': 3.062}, {'end': 8733.456, 'text': 'So underscore method.', 'start': 8730.574, 'duration': 2.882}, {'end': 8737.418, 'text': 'And of course the keyword delete.', 'start': 8733.936, 'duration': 3.482}], 'summary': 'The transcript discusses the addition of a hidden field, underscore method, and keyword delete for a specific form.', 'duration': 42.882, 'max_score': 8694.536, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy88694536.jpg'}, {'end': 8886.674, 'src': 'embed', 'start': 8840.192, 'weight': 0, 'content': [{'end': 8843.097, 'text': 'And in here we just need to find the post.', 'start': 8840.192, 'duration': 2.905}, {'end': 8849.938, 'text': 'just like what we have in our update and show.', 'start': 8845.734, 'duration': 4.204}, {'end': 8862.528, 'text': 'so find the post and then, of course, we need to delete the post using that function, and then we need to redirect to our post page.', 'start': 8849.938, 'duration': 12.59}, {'end': 8876.189, 'text': "so that's post post and of course, we need to pass in a message, So that's success.", 'start': 8862.528, 'duration': 13.661}, {'end': 8882.852, 'text': 'And then the post remove.', 'start': 8877.91, 'duration': 4.942}, {'end': 8886.674, 'text': 'So save that and then refresh.', 'start': 8884.513, 'duration': 2.161}], 'summary': 'Find and delete the post, redirect to post page, and pass success message.', 'duration': 46.482, 'max_score': 8840.192, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy88840192.jpg'}, {'end': 9070.245, 'src': 'embed', 'start': 9042.223, 'weight': 1, 'content': [{'end': 9048.485, 'text': "and then let's just try to wait for a few seconds to enable the.", 'start': 9042.223, 'duration': 6.262}, {'end': 9054.737, 'text': 'so, as you can see, we have here a problem.', 'start': 9052.136, 'duration': 2.601}, {'end': 9056.838, 'text': 'command make oath is not defined.', 'start': 9054.737, 'duration': 2.101}, {'end': 9062.701, 'text': 'so i think we have, oh so, instead of using the artisan make oath.', 'start': 9056.838, 'duration': 5.863}, {'end': 9070.245, 'text': 'so i think we need to run the command php artisan instead, and then ui and then oath.', 'start': 9062.701, 'duration': 7.544}], 'summary': "Issue with 'artisan make oath' command, suggested using 'php artisan ui oath'.", 'duration': 28.022, 'max_score': 9042.223, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy89042223.jpg'}], 'start': 7998.663, 'title': 'Blade template syntax highlighting & database data handling, updating post functionality in php, and implementing delete function and user authentication', 'summary': 'Introduces syntax highlighting for blade templates, enabling editing and deleting of database data. it covers updating post functionality in php, modifying the update function, and handling post edits. additionally, it discusses implementing the delete function for posts, user authentication setup, and database attributes for user details.', 'chapters': [{'end': 8416.48, 'start': 7998.663, 'title': 'Blade template syntax highlighting & database data handling', 'summary': 'Introduces syntax highlighting for blade templates and demonstrates enabling editing and deleting of data from the database, including creating edit functionality and updating the post controller.', 'duration': 417.817, 'highlights': ['The chapter introduces syntax highlighting for blade templates, only activated on files with blade.php extensions.', 'Demonstration of enabling editing and deleting of data from the database, including creating edit functionality and updating the post controller.', 'Detailed walkthrough of modifying the show page, adding an edit link, and creating an edit blade.php file to handle editing of posts.', "Explanation of the mechanism to enable the 'put' method for updating a post by using a hidden field in the form."]}, {'end': 8558.924, 'start': 8416.48, 'title': 'Updating post functionality in php', 'summary': 'Covers updating the post functionality in php by modifying the update function in the post controller, handling post edits and addressing a method not supported exception.', 'duration': 142.444, 'highlights': ['The update function in the post controller is modified to handle post edits, replacing the logic from the store function, and addressing the method not supported exception.', "The specific post is found by passing in the post ID, and the controller is adjusted to display 'post updated' instead of 'post created' upon successful update.", "The process involves navigating to the edit post page, making the necessary changes, and encountering a method not supported exception, which is resolved by adjusting the method to 'update' instead of 'store'."]}, {'end': 9070.245, 'start': 8558.924, 'title': 'Implementing delete function and user authentication', 'summary': 'Covers the implementation of the delete function for posts, including form creation and method specification. additionally, it discusses user authentication setup and the database attributes for user details, serving as a review of the create, read, update, delete functionalities.', 'duration': 511.321, 'highlights': ['Implemented the delete function for posts, utilizing form creation and method specification, ensuring the floating placement of the delete button. The delete function for posts was implemented by creating a form with the post controller and specifying the action, method, and class for the form, ensuring proper placement and functionality of the delete button.', 'Reviewed the create, read, update, delete functionalities and transitioned to discussing user authentication setup, highlighting the database attributes for user details. The chapter served as a review of the create, read, update, delete functionalities, and then transitioned to discussing the setup of user authentication, emphasizing the attributes in the users table for user details in the database.', "Encountered an issue with the 'php artisan make:auth' command and rectified it by using 'php artisan ui:auth' instead. An issue arose with the 'make:auth' command, which was resolved by using the 'ui:auth' command instead, ensuring the successful execution of the user authentication setup."]}], 'duration': 1071.582, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy87998663.jpg', 'highlights': ['Introduces syntax highlighting for blade templates, only activated on files with blade.php extensions.', 'Demonstration of enabling editing and deleting of data from the database, including creating edit functionality and updating the post controller.', 'The update function in the post controller is modified to handle post edits, replacing the logic from the store function, and addressing the method not supported exception.', 'Implemented the delete function for posts, utilizing form creation and method specification, ensuring the floating placement of the delete button.', 'Reviewed the create, read, update, delete functionalities and transitioned to discussing user authentication setup, highlighting the database attributes for user details.', "Encountered an issue with the 'php artisan make:auth' command and rectified it by using 'php artisan ui:auth' instead."]}, {'end': 11153.859, 'segs': [{'end': 9367.745, 'src': 'embed', 'start': 9278.172, 'weight': 0, 'content': [{'end': 9290.759, 'text': 'okay, so we have here the content yielding of content, but we need to add the container class or container div with the class container.', 'start': 9278.172, 'duration': 12.587}, {'end': 9307.234, 'text': 'okay, so this should solve the problem of the indention or the margin left for our project refresh.', 'start': 9293.063, 'duration': 14.171}, {'end': 9314.38, 'text': 'so, as you can see now, the content is indented and if we try to go to register, we can already.', 'start': 9307.234, 'duration': 7.146}, {'end': 9317.403, 'text': 'uh, we can already register here by using our name.', 'start': 9314.38, 'duration': 3.023}, {'end': 9339.621, 'text': "so, for example, um, tom saw, and then email, let's just say tom, gmail.com, and then password and then register.", 'start': 9317.403, 'duration': 22.218}, {'end': 9350.712, 'text': 'and as you can see, we have redirected into our home and prompted that we are now logged in.', 'start': 9339.621, 'duration': 11.091}, {'end': 9351.432, 'text': 'so, as you can see,', 'start': 9350.712, 'duration': 0.72}, {'end': 9367.745, 'text': 'we have enabled the user authentication and the laravel takes care of all the intricacies of using the user authentication within our project.', 'start': 9351.432, 'duration': 16.313}], 'summary': 'Resolved content indentation issue, enabled user authentication with laravel.', 'duration': 89.573, 'max_score': 9278.172, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy89278172.jpg'}, {'end': 9705.218, 'src': 'heatmap', 'start': 9555.685, 'weight': 0.71, 'content': [{'end': 9567.389, 'text': 'we can just say table and then drop column and then specifying the column user ID.', 'start': 9555.685, 'duration': 11.704}, {'end': 9569.389, 'text': 'so okay.', 'start': 9567.389, 'duration': 2}, {'end': 9583.555, 'text': "so after that one save this and then let's just say PHP, artisan, migrate and so migrating user id post and it says migrated.", 'start': 9569.389, 'duration': 14.166}, {'end': 9585.655, 'text': "so let's check our page, my admin.", 'start': 9583.555, 'duration': 2.1}, {'end': 9596.798, 'text': "so inside here in our database we can see we have already the user underscore id and for now let's just say um, it belongs to user one,", 'start': 9585.655, 'duration': 11.143}, {'end': 9602.019, 'text': 'this particular post and also this one, it belongs to the user one.', 'start': 9596.798, 'duration': 5.221}, {'end': 9604.64, 'text': 'so it just uh, it belongs to someone.', 'start': 9602.019, 'duration': 2.621}, {'end': 9615.587, 'text': "okay, so now let's try to um, edit the controller for our post, because whenever we, uh, whenever we add a certain post,", 'start': 9605.12, 'duration': 10.467}, {'end': 9623.172, 'text': 'we want the user id or grab the user id and add that along with the other information of the post.', 'start': 9615.587, 'duration': 7.585}, {'end': 9630.237, 'text': "so let's just go to http and then controllers and then post controllers.", 'start': 9623.172, 'duration': 7.065}, {'end': 9634.822, 'text': 'okay, so post.', 'start': 9630.237, 'duration': 4.585}, {'end': 9643.571, 'text': 'so inside our store function we just need to have the user id or pass in the user id.', 'start': 9634.822, 'duration': 8.749}, {'end': 9649.718, 'text': 'so here post and then user id equals.', 'start': 9643.571, 'duration': 6.147}, {'end': 9661.026, 'text': "this time we're not gonna use the request because the user ID doesn't come from the user, or I mean doesn't come from request.", 'start': 9651.06, 'duration': 9.966}, {'end': 9663.788, 'text': 'it comes from the user oath.', 'start': 9661.026, 'duration': 2.762}, {'end': 9671.033, 'text': "so it should say oath and then user, and then we're just going to have or grab the ID.", 'start': 9663.788, 'duration': 7.245}, {'end': 9690.165, 'text': 'okay, and then save so here, refresh and add post and then certain title of a post, new body of a post and then submit.', 'start': 9671.033, 'duration': 19.132}, {'end': 9705.218, 'text': 'So we have now the certain title of a post and if we try to check the third post, we can see that the user ID has been populated by value of 1,', 'start': 9692.614, 'duration': 12.604}], 'summary': 'Updating post controller to include user id fetched from user oath for adding posts.', 'duration': 149.533, 'max_score': 9555.685, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy89555685.jpg'}, {'end': 10108.097, 'src': 'embed', 'start': 10051.232, 'weight': 3, 'content': [{'end': 10064.581, 'text': 'so if it is greater than zero, then we need to display the table right table and here we need to add the else.', 'start': 10051.232, 'duration': 13.349}, {'end': 10080.673, 'text': 'and of course we need to say if the count of post is not greater than zero, then we have to say you have no post,', 'start': 10064.581, 'duration': 16.092}, {'end': 10101.735, 'text': 'no post and then our if statement and if and of course in here we also need to populate the table rows.', 'start': 10080.673, 'duration': 21.062}, {'end': 10108.097, 'text': 'so the title should be getting the title from the post.', 'start': 10101.735, 'duration': 6.362}], 'summary': "Display table if count of posts > 0, else show 'no post'", 'duration': 56.865, 'max_score': 10051.232, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy810051232.jpg'}], 'start': 9070.245, 'title': 'User authentication and blog functionality in laravel', 'summary': 'Covers updating file authentication views, adding blog services, enabling user authentication, database migration, modal relationships, and implementing user access control measures in a laravel project, ensuring secure access and functionality.', 'chapters': [{'end': 9248.179, 'start': 9070.245, 'title': 'User authentication and file overwriting', 'summary': 'Covers overwriting old files with new authentication views and updating the app.blade.php file to add blog services and post addition options in a laravel project.', 'duration': 177.934, 'highlights': ['The authentication scaffolding is generated successfully, overwriting old files with new versions of the login.php, blade.php, and email.php.', 'Updating the app.blade.php file to add options for blog services and adding a post.', 'Modifying the navigation bar to include options for adding a post and changing the style to inverse.']}, {'end': 9690.165, 'start': 9248.179, 'title': 'User authentication and database migration', 'summary': 'Covers fixing the display of the login and register pages, enabling user authentication in laravel, and adding user id to the database table, including running migrations and modifying the post controller to include the user id during post creation.', 'duration': 441.986, 'highlights': ['Enabling user authentication in Laravel The chapter demonstrates enabling user authentication in Laravel, allowing users to register, log in, and be redirected to the home page, with the system prompting that they are now logged in.', 'Fixing the display of the login and register pages The chapter addresses fixing the display of the login and register pages by adding a container div with the class container to the app.blade.php file, resulting in proper indentation and display.', 'Adding user ID to the database table The chapter explains the process of adding the user ID to the database table by creating a migration and running it using PHP artisan migrate, resulting in the user ID being included in the database table for posts.']}, {'end': 10169.801, 'start': 9692.614, 'title': 'Adding modal relationships in laravel', 'summary': "Discusses adding modal relationships in laravel, enabling the display of posts belonging to a certain user, and implementing functions to achieve this, such as 'belongs to' and 'has many', as well as creating the user interface for displaying the posts.", 'duration': 477.187, 'highlights': ['The chapter discusses adding modal relationships in Laravel, enabling the display of posts belonging to a certain user The video discusses adding modal relationships in Laravel to limit the display of posts to those belonging to a specific user.', "Implementing functions such as 'belongs to' and 'has many' to establish the relationship between user and posts The process involves implementing functions like 'belongs to' and 'has many' to establish the relationship between users and their posts, allowing users to have multiple posts.", 'Creating the user interface for displaying the posts The chapter covers creating the user interface for displaying posts, including table headers, checking the count of posts, and populating the table rows with post titles and edit buttons.']}, {'end': 10581.112, 'start': 10170.682, 'title': 'User access control implementation', 'summary': 'Covers the implementation of user access control, including the process of adding user authentication, controlling user access to specific pages, and modifying controllers to enforce access control measures.', 'duration': 410.43, 'highlights': ['The implementation of user access control is discussed, including adding features to control user access to specific pages. The chapter covers the process of adding a feature to control which pages the user can access, ensuring that certain pages are only accessible to logged-in users.', 'The need for user authentication before allowing users to create, modify, or delete posts is emphasized. It is highlighted that the user should be required to log in before being able to create, modify, or delete posts, ensuring proper access control measures.', 'Modifying controllers to enforce access control measures by adding middleware to restrict access for non-logged-in users. The process of modifying controllers, including adding middleware to restrict access for non-logged-in users, is discussed as a key step in enforcing access control measures.']}, {'end': 11153.859, 'start': 10581.713, 'title': 'Limiting access to blog posts', 'summary': 'Discusses limiting access to certain pages on a blog, such as creating and editing posts, by implementing authentication checks and owner validation, and also ensuring unauthorized users are redirected with appropriate error messages, ensuring secure access and functionality.', 'duration': 572.146, 'highlights': ['Implementing authentication checks to limit access for creating and editing posts, while allowing access to view blog posts. The chapter discusses implementing authentication checks to limit access to certain pages on a blog, such as creating and editing posts, while allowing access to view blog posts.', 'Validating user ownership for accessing edit and delete buttons on individual blog posts to ensure secure access. The chapter explains the implementation of user ownership validation for accessing edit and delete buttons on individual blog posts, ensuring secure access to these functionalities.', 'Redirecting unauthorized users with appropriate error messages to ensure secure access and functionality. It describes the process of redirecting unauthorized users with appropriate error messages to ensure secure access and functionality on the blog, preventing unauthorized actions.']}], 'duration': 2083.614, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy89070245.jpg', 'highlights': ['The need for user authentication before allowing users to create, modify, or delete posts is emphasized. It is highlighted that the user should be required to log in before being able to create, modify, or delete posts, ensuring proper access control measures.', 'Modifying controllers to enforce access control measures by adding middleware to restrict access for non-logged-in users. The process of modifying controllers, including adding middleware to restrict access for non-logged-in users, is discussed as a key step in enforcing access control measures.', "Implementing functions such as 'belongs to' and 'has many' to establish the relationship between user and posts The process involves implementing functions like 'belongs to' and 'has many' to establish the relationship between users and their posts, allowing users to have multiple posts.", 'The chapter covers creating the user interface for displaying posts, including table headers, checking the count of posts, and populating the table rows with post titles and edit buttons.', 'Implementing authentication checks to limit access for creating and editing posts, while allowing access to view blog posts. The chapter discusses implementing authentication checks to limit access to certain pages on a blog, such as creating and editing posts, while allowing access to view blog posts.']}, {'end': 12057.561, 'segs': [{'end': 11712.083, 'src': 'embed', 'start': 11622.743, 'weight': 4, 'content': [{'end': 11643.532, 'text': "So we're going to handle the handle, the file upload, and in here we have to say request and then has file.", 'start': 11622.743, 'duration': 20.789}, {'end': 11649.475, 'text': "we're just going to check if the user has opted to upload the file.", 'start': 11643.532, 'duration': 5.943}, {'end': 11655.477, 'text': 'so else we need to set the file name.', 'start': 11649.475, 'duration': 6.002}, {'end': 11663.121, 'text': 'file name to store is no image that jpeg.', 'start': 11655.477, 'duration': 7.644}, {'end': 11674.025, 'text': 'so this is going to be the default image for our user if he has opted to not upload cover image for for himself.', 'start': 11663.121, 'duration': 10.904}, {'end': 11676.026, 'text': 'so this will be the default.', 'start': 11674.025, 'duration': 2.001}, {'end': 11690.038, 'text': 'so if the user has opted to submit or upload the file, so it should say here we need to get the file name with the extension in here.', 'start': 11677.589, 'duration': 12.449}, {'end': 11712.083, 'text': 'so get file name with extension, get file name with extensions, and then it should say file name with ext is equals to the request.', 'start': 11690.038, 'duration': 22.045}], 'summary': "Handling file upload, setting default image if user doesn't upload, and getting file name and extension from the request.", 'duration': 89.34, 'max_score': 11622.743, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy811622743.jpg'}, {'end': 11828.259, 'src': 'embed', 'start': 11785.447, 'weight': 0, 'content': [{'end': 11790.37, 'text': "and now let's continue adding to this logic.", 'start': 11785.447, 'duration': 4.923}, {'end': 11795.995, 'text': 'so we have here the file name and then the next step is to get the extension.', 'start': 11790.37, 'duration': 5.625}, {'end': 11809.082, 'text': 'and Okay, so in order for us to do that, we need to add a new variable extension and then, by using the request object,', 'start': 11795.995, 'duration': 13.087}, {'end': 11828.259, 'text': "we're going to use the file method and then cover image and we're going to get the original client extension.", 'start': 11809.082, 'duration': 19.177}], 'summary': 'Adding logic to retrieve file extension using request object.', 'duration': 42.812, 'max_score': 11785.447, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy811785447.jpg'}, {'end': 12057.561, 'src': 'embed', 'start': 12021.226, 'weight': 1, 'content': [{'end': 12035.602, 'text': "let's open up our terminal and we need to run a command to link this storage app public folder into our actual public folder.", 'start': 12021.226, 'duration': 14.376}, {'end': 12042.79, 'text': 'so the command for that is php, artisan and storage, then link.', 'start': 12035.602, 'duration': 7.188}, {'end': 12045.79, 'text': 'So there you go.', 'start': 12044.989, 'duration': 0.801}, {'end': 12048.693, 'text': 'the public storage directory has been linked.', 'start': 12045.79, 'duration': 2.903}, {'end': 12057.561, 'text': "So whatever changes that we're making here in our storage file or storage directory will be reflected here in a public directory.", 'start': 12049.193, 'duration': 8.368}], 'summary': "Linked storage app public folder to actual public folder using 'php artisan storage link'.", 'duration': 36.335, 'max_score': 12021.226, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy812021226.jpg'}], 'start': 11153.859, 'title': 'Laravel file upload and image handling', 'summary': 'Covers the addition of file upload capability to a laravel project, including steps for adding the file upload element to the form, enabling file submission, and handling file uploads and storage, along with adding a cover image field to the post database, modifying the post controller, and implementing logic for file upload and storage. it also describes the process of handling file uploads for cover images, setting maximum file size, creating new file names, and ensuring public accessibility of uploaded images.', 'chapters': [{'end': 11341.984, 'start': 11153.859, 'title': 'File upload in laravel project', 'summary': 'Covers the addition of file upload capability to a laravel project, including the steps for adding the file upload element to the form, modifying the form and controller to enable file submission, and the need for logic to handle file uploads and storage.', 'duration': 188.125, 'highlights': ['The chapter covers the addition of file upload capability to a Laravel project, including the steps for adding the file upload element to the form, modifying the form and controller to enable file submission, and the need for logic to handle file uploads and storage.', 'Access control for post and blog post has been added in the project, with limited edit and delete buttons for the owners of the actual post.', "The file upload capability is being added to enable the upload of images for posts, enhancing the project's functionality.", "The process involves modifying the blade.php file to add the file upload element to the form, using Laravel collectives for the form and changing the form's enctype to 'multipart/form-data' to enable file submission.", 'Despite the addition of the file upload element, the logic for file handling and storage still needs to be implemented in the controller to ensure that the uploaded files are properly saved and integrated into the project.']}, {'end': 11581.609, 'start': 11343.585, 'title': 'Adding cover image to post', 'summary': 'Discusses adding a cover image field to the post database, creating a migration, modifying the post controller, and adding logic to upload and save the file, with emphasis on the migration and modifications in the post controller.', 'duration': 238.024, 'highlights': ['Adding cover image field to the post database through migration The chapter emphasizes the need to add a cover image field to the post database through a migration, outlining the steps to create the migration file and modify the database structure.', 'Modifying the post controller to handle cover image logic and validation The post controller is modified to include logic for cover image validation and handling, specifically focusing on the store function and adding validation for the cover image.', "Uploading and saving the cover image file in the file system and database The process of uploading and saving the cover image file into the project's file system and database is discussed, emphasizing the need to save the file name in the database and upload the actual file."]}, {'end': 12057.561, 'start': 11581.609, 'title': 'File image upload logic', 'summary': 'Describes the process of handling file uploads for cover images, setting a maximum file size of 1999, and creating a new file name with a timestamp and extension to avoid conflicts, while also ensuring the public accessibility of the uploaded images.', 'duration': 475.952, 'highlights': ["The maximum size of the file is set to 1999, to accommodate PHP's 2 MB file upload limit. Setting the maximum size of the file to 1999, as most PHP settings allow only 2 MB of file upload.", 'Creating a new file name with a timestamp and extension to avoid conflicts when users upload files with the same name. Concatenating the file name with an underscore and timestamp to avoid conflicts when users upload files with the same name.', "Linking the storage app public folder to the actual public folder for accessibility. Running the 'php artisan storage link' command to ensure that changes made in the storage directory are reflected in the public directory for accessibility."]}], 'duration': 903.702, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy811153859.jpg', 'highlights': ['The chapter covers the addition of file upload capability to a Laravel project, including the steps for adding the file upload element to the form, modifying the form and controller to enable file submission, and the need for logic to handle file uploads and storage.', 'Adding cover image field to the post database through migration, outlining the steps to create the migration file and modify the database structure.', "The maximum size of the file is set to 1999, to accommodate PHP's 2 MB file upload limit.", 'Modifying the post controller to handle cover image logic and validation, specifically focusing on the store function and adding validation for the cover image.', 'Creating a new file name with a timestamp and extension to avoid conflicts when users upload files with the same name.', 'Linking the storage app public folder to the actual public folder for accessibility, ensuring that changes made in the storage directory are reflected in the public directory.']}, {'end': 13275.769, 'segs': [{'end': 12234.32, 'src': 'embed', 'start': 12195.255, 'weight': 3, 'content': [{'end': 12210.609, 'text': "let's go back and refresh just to make sure, and then new post test and browse the image and then submit.", 'start': 12195.255, 'duration': 15.354}, {'end': 12215.893, 'text': "so again we're getting the get original client extension does not exist.", 'start': 12210.609, 'duration': 5.284}, {'end': 12217.954, 'text': 'so i think we also have a typo.', 'start': 12215.893, 'duration': 2.061}, {'end': 12221.357, 'text': "so we're just going to copy this get client original extension.", 'start': 12217.954, 'duration': 3.403}, {'end': 12233.678, 'text': "so let's go back to our code editor and replace this with get client original extension.", 'start': 12221.357, 'duration': 12.321}, {'end': 12234.32, 'text': 'so save that.', 'start': 12233.678, 'duration': 0.642}], 'summary': "Fix typo 'get original client extension' to 'get client original extension'", 'duration': 39.065, 'max_score': 12195.255, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy812195255.jpg'}, {'end': 12836.133, 'src': 'embed', 'start': 12806.613, 'weight': 5, 'content': [{'end': 12815.979, 'text': "okay, so we're just going to paste here the validation and of course, all the logic that will handle our file upload.", 'start': 12806.613, 'duration': 9.366}, {'end': 12827.087, 'text': "so this is going to be a bit different from the store logic, because we're not going to have this line here,", 'start': 12815.979, 'duration': 11.108}, {'end': 12836.133, 'text': "which means that we don't want to update when the user has not uploaded the image.", 'start': 12827.087, 'duration': 9.046}], 'summary': 'Developing validation and upload logic for file handling.', 'duration': 29.52, 'max_score': 12806.613, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy812806613.jpg'}, {'end': 12919.837, 'src': 'embed', 'start': 12884.771, 'weight': 2, 'content': [{'end': 12893.638, 'text': 'so we have here the post and then we have the actual post and then we can edit that one.', 'start': 12884.771, 'duration': 8.867}, {'end': 12905.948, 'text': 'and if you try to submit without selecting any image, then we can just update the post, but not updating the image right here.', 'start': 12893.638, 'duration': 12.31}, {'end': 12909.231, 'text': "but let's try to update the image.", 'start': 12905.948, 'duration': 3.283}, {'end': 12916.195, 'text': "so let's browse another image and then open and then submit.", 'start': 12910.792, 'duration': 5.403}, {'end': 12919.837, 'text': 'post has been updated and, as you can see,', 'start': 12916.195, 'duration': 3.642}], 'summary': 'Updating post with new image successful.', 'duration': 35.066, 'max_score': 12884.771, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy812884771.jpg'}, {'end': 13130.099, 'src': 'embed', 'start': 13036.545, 'weight': 0, 'content': [{'end': 13061.007, 'text': 'if this post cover image is not equal to post, then user I mean not equal to no image that JPEG or JPG.', 'start': 13036.545, 'duration': 24.462}, {'end': 13070.231, 'text': 'so this will be our default image when the user has not uploaded a file for their particular post.', 'start': 13061.007, 'duration': 9.224}, {'end': 13084.747, 'text': "so we don't want this to be deleted if the user hasn't uploaded a file, so this will be storage and then delete.", 'start': 13070.231, 'duration': 14.516}, {'end': 13102.657, 'text': "So we're going to public and then cover images and of course the actual file name of our cover image.", 'start': 13087.288, 'duration': 15.369}, {'end': 13109.001, 'text': 'So save this and then try to delete this post.', 'start': 13103.658, 'duration': 5.343}, {'end': 13120.233, 'text': 'post has been removed and as you can see the image from the cover images directory has been deleted.', 'start': 13111.769, 'duration': 8.464}, {'end': 13130.099, 'text': 'One last concern also is if you try to go to our blog and add post.', 'start': 13123.555, 'duration': 6.544}], 'summary': "Default image stored if user hasn't uploaded, file deleted when post is removed.", 'duration': 93.554, 'max_score': 13036.545, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy813036545.jpg'}], 'start': 12058.082, 'title': 'Image handling and file upload logic', 'summary': 'Covers file saving, image handling, and upload logic in the post controller. it details the process of uploading, displaying, and managing images in a web application, including setting default images for blog posts. specific focus is on file upload validation, image display, and addressing broken image icons. additionally, the chapter invites subscription to a youtube channel for programming content.', 'chapters': [{'end': 12273.399, 'start': 12058.082, 'title': 'File saving and image handling', 'summary': 'Discusses the process of saving a file name to store, handling image uploads, and addressing errors in the create blade.php file, with the ultimate success of creating a new post with an image and plans to display the image in the show post and new post.', 'duration': 215.317, 'highlights': ['The process of saving a file name to store and handling image uploads is discussed, including addressing errors in the create blade.php file.', 'The successful creation of a new post with an image is achieved after addressing various errors in the file handling and image upload process.', 'Plans to display the image in the show post and new post are mentioned as the next steps in the process.']}, {'end': 12455.329, 'start': 12273.399, 'title': 'Image upload and display process', 'summary': 'Details the process of uploading an image to storage, creating a cover image directory, deleting records with no cover image, and displaying images from the database on a web page using php and bootstrap.', 'duration': 181.93, 'highlights': ['The process of uploading an image to storage and creating a cover image directory is detailed. successful image upload', 'The method for deleting records with no cover image is explained. deleting records', 'Instructions for displaying images from the database on a web page using PHP and Bootstrap are provided. displaying images']}, {'end': 12728.326, 'start': 12455.329, 'title': 'Adding image feature to posts', 'summary': 'Covers the process of adding an image feature to posts, including the ability to upload, display, and edit images within a web application, with specific focus on updating the code to include images in individual posts and the creation/editing of posts.', 'duration': 272.997, 'highlights': ['The process of adding an image feature to posts, including the ability to upload and display images within a web application. ', 'Updating the code to include images in individual posts, enabling the display of the image, title, body, and meta information for each post. ', 'Incorporating the creation and editing of posts with the ability to upload and display images, requiring the addition of file input elements and the necessary form data type. ']}, {'end': 13036.545, 'start': 12729.367, 'title': 'File upload logic in post controller', 'summary': 'Discusses the addition of file upload logic in the post controller, including modifying the update function, handling file upload validation, and implementing file deletion upon post deletion.', 'duration': 307.178, 'highlights': ['The logic of the edit function is modified to handle the file upload, including validation and updating the file. The edit function is modified to incorporate file upload logic, involving validation and updating the file, ensuring proper handling of file uploads within the post controller.', "The process of deleting a post is enhanced to include the deletion of associated files from the project directory, requiring adjustments in the post controller's destroy function. Enhancements are made to the post deletion process to ensure associated files in the project directory are also deleted, necessitating modifications in the post controller's destroy function.", 'The addition of file upload logic in the post controller involves integrating the storage library and implementing file handling functionalities within the update and destroy functions. Integration of the storage library and implementation of file handling functionalities within the update and destroy functions are pivotal aspects of incorporating file upload logic in the post controller.']}, {'end': 13275.769, 'start': 13036.545, 'title': 'Managing default images for blog posts', 'summary': "Discusses the process of setting a default image for blog posts when no image is uploaded, covering the storage, deletion, and display of the default image with the file name 'jpg'. it also addresses the issue of broken image icons when no image is uploaded, providing a solution by adding a default no image. the chapter concludes with an invitation to subscribe to the youtube channel for programming content.", 'duration': 239.224, 'highlights': ["Setting a default image for blog posts when no image is uploaded, including the process of storage, deletion, and display with the file name 'jpg'", 'Addressing the issue of broken image icons when no image is uploaded and providing a solution by adding a default no image', 'Inviting viewers to subscribe to the YouTube channel for programming content']}], 'duration': 1217.687, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/EcYXsp78Xy8/pics/EcYXsp78Xy812058082.jpg', 'highlights': ['The process of adding an image feature to posts, including the ability to upload and display images within a web application.', 'The logic of the edit function is modified to handle the file upload, including validation and updating the file.', "Setting a default image for blog posts when no image is uploaded, including the process of storage, deletion, and display with the file name 'jpg'", 'The process of uploading an image to storage and creating a cover image directory is detailed. successful image upload', 'The method for deleting records with no cover image is explained. deleting records', 'Plans to display the image in the show post and new post are mentioned as the next steps in the process.']}], 'highlights': ['Laravel is an open source PHP framework, focusing on making the development process pleasing without sacrificing quality. It is popular, respected, and uses the MVC design pattern.', 'The chapter introduces the plan to cover the fundamentals of Laravel while building a project from start to finish, addressing its popularity and respect in the programming community.', 'The chapter introduces the topics covered in the series, including building a website with authentication, and discusses the advantages of using Laravel, such as its simple routing, security features, database handling, command line tool Artisan, blade template engine, authentication setup, session handling, asset compilation, error handling, unit testing, email configuration, and cache handling.', 'The tutorial series will use WAMP server, composer, and Git for the development process.', 'The process of creating a Laravel project using Windows PowerShell is explained, emphasizing the integration of composer to the command line.', 'The installation of WAMP server, composer, and Git, along with the navigation through directories using Windows PowerShell, is detailed for setting up the environment.', 'Laravel uses the model view controller or MVC format, with specific areas for models, views, and controllers.', "The app folder contains the model 'user.php,' which is a model file, and models can be added inside the app folder or in a subfolder named 'models.'", 'Laravel creates folders for other controllers like login, register, and reset password controllers, readily available if auth is enabled for the project.', 'Laravel uses the blade templating system for dynamic HTML generation, including if statements, loops, and variables.', 'Creating routes for pages like about, home, and contact using a pages controller.', 'Handling dynamic values in requests, with an example of submitting and displaying a user with a specific ID.', 'Describes the step-by-step process of installing Node.js and npm on Windows or Mac OS X, enabling options, and checking the installed versions.', 'Details the installation process of Laravel UI, including incorporating Bootstrap and necessary libraries, and checking for successful installation.', 'Covers setting up phpmyadmin to create a new database, necessary for adding a database in WAMP server installation.', 'Creating a post controller and model using PHP artisan commands to generate post controller and model.', 'Updating database details in the .env file to ensure the correct database is used for the Laravel project.', 'Using Tinker commands to add posts to the database, returning true for successful saves of post data, and verifying the presence of the added posts in the database.', 'The need for user authentication before allowing users to create, modify, or delete posts is emphasized. It is highlighted that the user should be required to log in before being able to create, modify, or delete posts, ensuring proper access control measures.', 'The chapter covers the addition of file upload capability to a Laravel project, including the steps for adding the file upload element to the form, modifying the form and controller to enable file submission, and the need for logic to handle file uploads and storage.']}