ソースを参照

Lesson 19 step 4: add a list of projects as a component.

Frederic G. MARAND 6 年 前
コミット
ca1ec068cb

+ 4 - 1
.idea/Vue Laracasts.iml

@@ -1,7 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module type="WEB_MODULE" version="4">
   <component name="NewModuleRootManager">
-    <content url="file://$MODULE_DIR$" />
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/lesson19/Vue-Forms/bootstrap/cache" />
+      <excludeFolder url="file://$MODULE_DIR$/lib" />
+    </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
   </component>

+ 232 - 183
.idea/workspace.xml

@@ -2,12 +2,13 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="0f813586-48e2-4acf-8923-221617ab434f" name="Default" comment="">
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/lesson19/readme-laravel.md" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/Vue Laracasts.iml" afterPath="$PROJECT_DIR$/.idea/Vue Laracasts.iml" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/lesson19/code.js" afterPath="$PROJECT_DIR$/lesson19/code.js" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/lesson19/index.html" afterPath="$PROJECT_DIR$/lesson19/index.html" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/lesson19/src/Project.php" afterPath="$PROJECT_DIR$/lesson19/src/Project.php" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/lesson19/index.php" afterPath="$PROJECT_DIR$/lesson19/index.php" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/lesson19/src/ProjectManager.php" afterPath="$PROJECT_DIR$/lesson19/src/ProjectManager.php" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/lesson19/src/ProjectStore.php" afterPath="$PROJECT_DIR$/lesson19/src/ProjectStore.php" />
     </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="TRACKING_ENABLED" value="true" />
@@ -38,6 +39,7 @@
       <find>alert(</find>
       <find />
       <find>project</find>
+      <find>template</find>
     </findStrings>
     <replaceStrings>
       <replace>'</replace>
@@ -59,7 +61,6 @@
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
-        <option value="$PROJECT_DIR$/lesson8/index.html" />
         <option value="$PROJECT_DIR$/.eslintrc.json" />
         <option value="/HTML Fragment (code.js:41).html" />
         <option value="$PROJECT_DIR$/lesson8/code.js" />
@@ -103,10 +104,11 @@
         <option value="$PROJECT_DIR$/lesson19/ProjectManager.php" />
         <option value="$PROJECT_DIR$/lesson19/composer.json" />
         <option value="$PROJECT_DIR$/lesson19/src/ContainerInjectionInterface.php" />
-        <option value="$PROJECT_DIR$/lesson19/index.php" />
         <option value="$PROJECT_DIR$/lesson19/project.json" />
         <option value="$PROJECT_DIR$/lesson19/src/Project.php" />
         <option value="$PROJECT_DIR$/lesson19/src/ProjectStore.php" />
+        <option value="$PROJECT_DIR$/lesson19/readme-laravel.md" />
+        <option value="$PROJECT_DIR$/lesson19/index.php" />
         <option value="$PROJECT_DIR$/lesson19/src/ProjectManager.php" />
         <option value="$PROJECT_DIR$/lesson19/index.html" />
         <option value="$PROJECT_DIR$/lesson19/code.js" />
@@ -133,7 +135,7 @@
     <dismissed value="$PROJECT_DIR$/lesson16/hello-vue/package.json" />
     <dismissed value="$PROJECT_DIR$/lesson17/lesson/package.json" />
   </component>
-  <component name="PhpDebugGeneral" xdebug_debug_port="9001" listening_started="true" />
+  <component name="PhpDebugGeneral" xdebug_debug_port="9001" break_at_first_line="true" />
   <component name="PhpServers">
     <servers>
       <server host="vue" id="e80b0b3b-4346-4a39-aac3-99ca0dc6251f" name="vue" />
@@ -170,22 +172,27 @@
             <path>
               <item name="Vue Laracasts" type="b2602c69:ProjectViewProjectNode" />
               <item name="laracasts" type="2a2b976b:PhpTreeStructureProvider$1" />
-              <item name="lesson06" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="lesson03" type="2a2b976b:PhpTreeStructureProvider$1" />
+            </path>
+            <path>
+              <item name="Vue Laracasts" type="b2602c69:ProjectViewProjectNode" />
+              <item name="laracasts" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="lesson04" type="2a2b976b:PhpTreeStructureProvider$1" />
             </path>
             <path>
               <item name="Vue Laracasts" type="b2602c69:ProjectViewProjectNode" />
               <item name="laracasts" type="2a2b976b:PhpTreeStructureProvider$1" />
-              <item name="lesson07" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="lesson05" type="2a2b976b:PhpTreeStructureProvider$1" />
             </path>
             <path>
               <item name="Vue Laracasts" type="b2602c69:ProjectViewProjectNode" />
               <item name="laracasts" type="2a2b976b:PhpTreeStructureProvider$1" />
-              <item name="lesson08" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="lesson14" type="2a2b976b:PhpTreeStructureProvider$1" />
             </path>
             <path>
               <item name="Vue Laracasts" type="b2602c69:ProjectViewProjectNode" />
               <item name="laracasts" type="2a2b976b:PhpTreeStructureProvider$1" />
-              <item name="lesson09" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="lesson15" type="2a2b976b:PhpTreeStructureProvider$1" />
             </path>
             <path>
               <item name="Vue Laracasts" type="b2602c69:ProjectViewProjectNode" />
@@ -198,6 +205,27 @@
               <item name="lesson19" type="2a2b976b:PhpTreeStructureProvider$1" />
               <item name="src" type="2a2b976b:PhpTreeStructureProvider$1" />
             </path>
+            <path>
+              <item name="Vue Laracasts" type="b2602c69:ProjectViewProjectNode" />
+              <item name="laracasts" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="lesson19" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="vendor" type="2a2b976b:PhpTreeStructureProvider$1" />
+            </path>
+            <path>
+              <item name="Vue Laracasts" type="b2602c69:ProjectViewProjectNode" />
+              <item name="laracasts" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="lesson19" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="vendor" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="symfony" type="2a2b976b:PhpTreeStructureProvider$1" />
+            </path>
+            <path>
+              <item name="Vue Laracasts" type="b2602c69:ProjectViewProjectNode" />
+              <item name="laracasts" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="lesson19" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="vendor" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="symfony" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="http-kernel" type="2a2b976b:PhpTreeStructureProvider$1" />
+            </path>
           </expand>
           <select />
         </subPane>
@@ -381,12 +409,12 @@
       <workItem from="1500666240713" duration="643000" />
       <workItem from="1501442497993" duration="54000" />
       <workItem from="1501442560946" duration="143000" />
-      <workItem from="1501834423911" duration="16326000" />
+      <workItem from="1501834423911" duration="19893000" />
     </task>
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="40715000" />
+    <option name="totallyTimeSpent" value="44282000" />
   </component>
   <component name="ToolWindowManager">
     <frame x="0" y="23" width="1436" height="877" extended-state="6" />
@@ -397,7 +425,7 @@
       <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
       <window_info id="Mongo Explorer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3299363" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Project" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.22812052" sideWeight="0.5" order="5" side_tool="false" content_ui="combo" />
+      <window_info id="Project" active="true" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.22812052" sideWeight="0.5" order="5" side_tool="false" content_ui="combo" />
       <window_info id="Docker" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
       <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
       <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32992327" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
@@ -421,428 +449,449 @@
   </component>
   <component name="XDebuggerManager">
     <breakpoint-manager>
+      <breakpoints>
+        <line-breakpoint enabled="true" type="php">
+          <url>file://$PROJECT_DIR$/lesson19/src/ProjectManager.php</url>
+          <line>26</line>
+          <option name="timeStamp" value="14" />
+        </line-breakpoint>
+      </breakpoints>
       <breakpoints-dialog>
         <breakpoints-dialog />
       </breakpoints-dialog>
-      <option name="time" value="13" />
+      <option name="time" value="15" />
     </breakpoint-manager>
     <watches-manager />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/lesson02/code.js">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/autoload.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="120">
-          <caret line="8" column="0" lean-forward="false" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/axios-0.16.2.min.js">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/composer/autoload_namespaces.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="225">
-          <caret line="1" column="1210" lean-forward="false" selection-start-line="1" selection-start-column="1210" selection-end-line="1" selection-end-column="1210" />
+        <state relative-caret-position="150">
+          <caret line="10" column="0" lean-forward="true" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/bulma-0.5.0/README.md">
-      <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
-        <state split_layout="SECOND">
-          <first_editor relative-caret-position="0">
-            <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-            <folding />
-          </first_editor>
-          <second_editor />
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/composer/autoload_files.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="150">
+          <caret line="10" column="0" lean-forward="true" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
+          <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson10/index.html">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/pimple/pimple/src/Pimple/Psr11/Container.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="90">
-          <caret line="6" column="77" lean-forward="false" selection-start-line="6" selection-start-column="77" selection-end-line="6" selection-end-column="77" />
+        <state relative-caret-position="45">
+          <caret line="36" column="12" lean-forward="false" selection-start-line="36" selection-start-column="12" selection-end-line="36" selection-end-column="12" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/bulma-0.5.0/docs/extensions.html">
+    <entry file="file://$PROJECT_DIR$/lesson19/composer.json">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="75">
-          <caret line="5" column="8" lean-forward="false" selection-start-line="5" selection-start-column="8" selection-end-line="5" selection-end-column="8" />
+        <state relative-caret-position="135">
+          <caret line="9" column="25" lean-forward="false" selection-start-line="9" selection-start-column="25" selection-end-line="9" selection-end-column="25" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson09/index.html">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/composer/autoload_classmap.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="105">
-          <caret line="7" column="0" lean-forward="false" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
+        <state relative-caret-position="120">
+          <caret line="8" column="22" lean-forward="false" selection-start-line="8" selection-start-column="15" selection-end-line="8" selection-end-column="22" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson15/index.html">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/silex/silex/src/Silex/Provider/Routing/LazyRequestMatcher.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="105">
-          <caret line="7" column="0" lean-forward="false" selection-start-line="5" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
+        <state relative-caret-position="187">
+          <caret line="44" column="0" lean-forward="false" selection-start-line="44" selection-start-column="0" selection-end-line="44" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson12/index.html">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/http-foundation/Request.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="90">
-          <caret line="6" column="0" lean-forward="false" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
+        <state relative-caret-position="207">
+          <caret line="947" column="0" lean-forward="false" selection-start-line="947" selection-start-column="0" selection-end-line="947" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson11/index.html">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/event-dispatcher/EventDispatcher.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="105">
-          <caret line="7" column="0" lean-forward="false" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
+        <state relative-caret-position="135">
+          <caret line="46" column="0" lean-forward="false" selection-start-line="46" selection-start-column="0" selection-end-line="46" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson13/index.html">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/http-kernel/EventListener/RouterListener.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="105">
-          <caret line="7" column="0" lean-forward="false" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
+        <state relative-caret-position="180">
+          <caret line="130" column="0" lean-forward="false" selection-start-line="130" selection-start-column="0" selection-end-line="130" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson14/index.html">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/http-kernel/Controller/ArgumentResolver.php">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="105">
-          <caret line="7" column="0" lean-forward="false" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
+          <caret line="67" column="13" lean-forward="true" selection-start-line="67" selection-start-column="13" selection-end-line="67" selection-end-column="13" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/bulma-0.5.0.css">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/routing/Matcher/UrlMatcher.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="420">
-          <caret line="28" column="3" lean-forward="true" selection-start-line="28" selection-start-column="3" selection-end-line="28" selection-end-column="3" />
+        <state relative-caret-position="237">
+          <caret line="111" column="0" lean-forward="false" selection-start-line="111" selection-start-column="0" selection-end-line="111" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson16/index.html">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/routing/Matcher/RedirectableUrlMatcher.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="240">
-          <caret line="16" column="10" lean-forward="true" selection-start-line="16" selection-start-column="10" selection-end-line="16" selection-end-column="10" />
+        <state relative-caret-position="140">
+          <caret line="42" column="0" lean-forward="false" selection-start-line="42" selection-start-column="0" selection-end-line="42" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson17/index.html">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/psr/container/src/ContainerInterface.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="165">
-          <caret line="11" column="32" lean-forward="false" selection-start-line="11" selection-start-column="32" selection-end-line="11" selection-end-column="32" />
+        <state relative-caret-position="147">
+          <caret line="10" column="10" lean-forward="false" selection-start-line="10" selection-start-column="10" selection-end-line="10" selection-end-column="10" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson18/index.html">
+    <entry file="file://$PROJECT_DIR$/lesson19/src/ContainerInjectionInterface.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="240">
-          <caret line="16" column="10" lean-forward="true" selection-start-line="16" selection-start-column="10" selection-end-line="16" selection-end-column="10" />
+        <state relative-caret-position="90">
+          <caret line="6" column="36" lean-forward="false" selection-start-line="6" selection-start-column="36" selection-end-line="6" selection-end-column="36" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson18/code.js">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/composer/ClassLoader.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="285">
-          <caret line="19" column="0" lean-forward="true" selection-start-line="19" selection-start-column="0" selection-end-line="19" selection-end-column="0" />
+        <state relative-caret-position="105">
+          <caret line="323" column="0" lean-forward="false" selection-start-line="323" selection-start-column="0" selection-end-line="323" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/.gitignore">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/http-foundation/JsonResponse.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="60">
-          <caret line="4" column="0" lean-forward="true" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
+        <state relative-caret-position="251">
+          <caret line="41" column="20" lean-forward="false" selection-start-line="41" selection-start-column="20" selection-end-line="41" selection-end-column="20" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/pimple/pimple/README.rst">
+    <entry file="file://$PROJECT_DIR$/lesson19/src/Project.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-495">
-          <caret line="79" column="0" lean-forward="true" selection-start-line="79" selection-start-column="0" selection-end-line="79" selection-end-column="0" />
+        <state relative-caret-position="300">
+          <caret line="20" column="6" lean-forward="false" selection-start-line="20" selection-start-column="6" selection-end-line="20" selection-end-column="6" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/autoload.php">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/http-foundation/Response.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        <state relative-caret-position="345">
+          <caret line="63" column="10" lean-forward="false" selection-start-line="63" selection-start-column="10" selection-end-line="63" selection-end-column="10" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/composer/autoload_namespaces.php">
+    <entry file="file://$PROJECT_DIR$/lesson19/src/ProjectStore.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="150">
-          <caret line="10" column="0" lean-forward="true" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
+        <state relative-caret-position="162">
+          <caret line="52" column="0" lean-forward="false" selection-start-line="52" selection-start-column="0" selection-end-line="52" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/composer/autoload_files.php">
+    <entry file="file://$PROJECT_DIR$/lesson06/code.js">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="150">
-          <caret line="10" column="0" lean-forward="true" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
+        <state relative-caret-position="181">
+          <caret line="25" column="19" lean-forward="true" selection-start-line="25" selection-start-column="19" selection-end-line="25" selection-end-column="19" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/pimple/pimple/src/Pimple/Psr11/Container.php">
+    <entry file="file://$PROJECT_DIR$/lesson08/index.html">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="45">
-          <caret line="36" column="12" lean-forward="false" selection-start-line="36" selection-start-column="12" selection-end-line="36" selection-end-column="12" />
+        <state relative-caret-position="270">
+          <caret line="18" column="6" lean-forward="true" selection-start-line="18" selection-start-column="6" selection-end-line="18" selection-end-column="6" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/composer.json">
+    <entry file="file://$PROJECT_DIR$/lesson09/code.js">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="135">
-          <caret line="9" column="25" lean-forward="false" selection-start-line="9" selection-start-column="25" selection-end-line="9" selection-end-column="25" />
-          <folding />
+        <state relative-caret-position="240">
+          <caret line="16" column="8" lean-forward="true" selection-start-line="16" selection-start-column="8" selection-end-line="16" selection-end-column="8" />
+          <folding>
+            <marker date="1496681312000" expanded="true" signature="126:391" ph="..." />
+            <marker date="1496681312000" expanded="true" signature="157:324" ph="..." />
+            <marker date="1496681312000" expanded="true" signature="356:380" ph="..." />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/composer/autoload_classmap.php">
+    <entry file="file://$PROJECT_DIR$/lesson08/code.js">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="120">
-          <caret line="8" column="22" lean-forward="false" selection-start-line="8" selection-start-column="15" selection-end-line="8" selection-end-column="22" />
-          <folding />
+        <state relative-caret-position="342">
+          <caret line="25" column="0" lean-forward="true" selection-start-line="25" selection-start-column="0" selection-end-line="25" selection-end-column="0" />
+          <folding>
+            <marker date="1496681312000" expanded="true" signature="113:180" ph="..." />
+            <marker date="1496681312000" expanded="true" signature="144:174" ph="..." />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/pimple/pimple/src/Pimple/Container.php">
+    <entry file="file://$PROJECT_DIR$/lesson19/public/index.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="225">
-          <caret line="122" column="0" lean-forward="false" selection-start-line="122" selection-start-column="0" selection-end-line="122" selection-end-column="0" />
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/silex/silex/src/Silex/Provider/Routing/LazyRequestMatcher.php">
+    <entry file="file://$PROJECT_DIR$/lesson19/Vue-Forms/server.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="187">
-          <caret line="44" column="0" lean-forward="false" selection-start-line="44" selection-start-column="0" selection-end-line="44" selection-end-column="0" />
+        <state relative-caret-position="315">
+          <caret line="21" column="0" lean-forward="true" selection-start-line="21" selection-start-column="0" selection-end-line="21" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/http-foundation/Request.php">
+    <entry file="file://$PROJECT_DIR$/lesson19/Vue-Forms/bootstrap/cache/compiled.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="207">
-          <caret line="947" column="0" lean-forward="false" selection-start-line="947" selection-start-column="0" selection-end-line="947" selection-end-column="0" />
+        <state relative-caret-position="239">
+          <caret line="277" column="1" lean-forward="true" selection-start-line="277" selection-start-column="1" selection-end-line="277" selection-end-column="1" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/event-dispatcher/EventDispatcher.php">
+    <entry file="file://$PROJECT_DIR$/lesson19/Vue-Forms/bootstrap/app.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="135">
-          <caret line="46" column="0" lean-forward="false" selection-start-line="46" selection-start-column="0" selection-end-line="46" selection-end-column="0" />
+        <state relative-caret-position="174">
+          <caret line="39" column="55" lean-forward="true" selection-start-line="39" selection-start-column="55" selection-end-line="39" selection-end-column="55" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/http-kernel/EventListener/RouterListener.php">
+    <entry file="file://$PROJECT_DIR$/lesson19/Vue-Forms/public/index.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="180">
-          <caret line="130" column="0" lean-forward="false" selection-start-line="130" selection-start-column="0" selection-end-line="130" selection-end-column="0" />
+        <state relative-caret-position="399">
+          <caret line="57" column="0" lean-forward="false" selection-start-line="57" selection-start-column="0" selection-end-line="57" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/http-kernel/Controller/ArgumentResolver.php">
+    <entry file="file://$PROJECT_DIR$/lesson19/Vue-Forms/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="105">
-          <caret line="67" column="13" lean-forward="true" selection-start-line="67" selection-start-column="13" selection-end-line="67" selection-end-column="13" />
+        <state relative-caret-position="435">
+          <caret line="29" column="0" lean-forward="false" selection-start-line="29" selection-start-column="0" selection-end-line="29" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/routing/Matcher/UrlMatcher.php">
+    <entry file="file://$PROJECT_DIR$/lesson19/Vue-Forms/vendor/composer/ClassLoader.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="237">
-          <caret line="111" column="0" lean-forward="false" selection-start-line="111" selection-start-column="0" selection-end-line="111" selection-end-column="0" />
+        <state relative-caret-position="220">
+          <caret line="323" column="0" lean-forward="false" selection-start-line="323" selection-start-column="0" selection-end-line="323" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/routing/Matcher/RedirectableUrlMatcher.php">
+    <entry file="file://$PROJECT_DIR$/lesson19/Vue-Forms/database/factories/ModelFactory.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="140">
-          <caret line="42" column="0" lean-forward="false" selection-start-line="42" selection-start-column="0" selection-end-line="42" selection-end-column="0" />
+        <state relative-caret-position="360">
+          <caret line="24" column="0" lean-forward="true" selection-start-line="24" selection-start-column="0" selection-end-line="24" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/silex/silex/src/Silex/Application.php">
+    <entry file="file://$PROJECT_DIR$/lesson19/Vue-Forms/config/app.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="192">
-          <caret line="480" column="0" lean-forward="true" selection-start-line="480" selection-start-column="0" selection-end-line="480" selection-end-column="0" />
+        <state relative-caret-position="-3051">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/psr/container/src/ContainerInterface.php">
+    <entry file="file://$PROJECT_DIR$/lesson19/Vue-Forms/config/database.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="147">
-          <caret line="10" column="10" lean-forward="false" selection-start-line="10" selection-start-column="10" selection-end-line="10" selection-end-column="10" />
+        <state relative-caret-position="-681">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/src/ContainerInjectionInterface.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="90">
-          <caret line="6" column="36" lean-forward="false" selection-start-line="6" selection-start-column="36" selection-end-line="6" selection-end-column="36" />
-          <folding />
+    <entry file="file://$PROJECT_DIR$/lesson19/readme-laravel.md">
+      <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
+        <state split_layout="SPLIT">
+          <first_editor relative-caret-position="285">
+            <caret line="14" column="0" lean-forward="true" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
+            <folding />
+          </first_editor>
+          <second_editor />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/composer/ClassLoader.php">
+    <entry file="file://$PROJECT_DIR$/lesson04/index.html">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="105">
-          <caret line="323" column="0" lean-forward="false" selection-start-line="323" selection-start-column="0" selection-end-line="323" selection-end-column="0" />
+        <state relative-caret-position="330">
+          <caret line="22" column="45" lean-forward="true" selection-start-line="22" selection-start-column="45" selection-end-line="22" selection-end-column="45" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/http-kernel/HttpKernel.php">
+    <entry file="file://$PROJECT_DIR$/lesson04/code.js">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="147">
-          <caret line="155" column="0" lean-forward="false" selection-start-line="155" selection-start-column="0" selection-end-line="155" selection-end-column="0" />
+        <state relative-caret-position="240">
+          <caret line="16" column="0" lean-forward="true" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/index.php">
+    <entry file="file://$PROJECT_DIR$/lesson03/code.js">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="120">
-          <caret line="8" column="0" lean-forward="false" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
+        <state relative-caret-position="255">
+          <caret line="17" column="0" lean-forward="true" selection-start-line="17" selection-start-column="0" selection-end-line="17" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/http-foundation/JsonResponse.php">
+    <entry file="file://$PROJECT_DIR$/lesson15/code.js">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="251">
-          <caret line="41" column="20" lean-forward="false" selection-start-line="41" selection-start-column="20" selection-end-line="41" selection-end-column="20" />
+        <state relative-caret-position="180">
+          <caret line="12" column="0" lean-forward="true" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/project.json">
+    <entry file="file://$PROJECT_DIR$/lesson15/index.html">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="135">
-          <caret line="9" column="1" lean-forward="true" selection-start-line="9" selection-start-column="1" selection-end-line="9" selection-end-column="1" />
+        <state relative-caret-position="345">
+          <caret line="23" column="85" lean-forward="true" selection-start-line="23" selection-start-column="85" selection-end-line="23" selection-end-column="85" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/src/Project.php">
+    <entry file="file://$PROJECT_DIR$/lesson14/index.html">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="300">
-          <caret line="20" column="6" lean-forward="false" selection-start-line="20" selection-start-column="6" selection-end-line="20" selection-end-column="6" />
+        <state relative-caret-position="207">
+          <caret line="21" column="30" lean-forward="false" selection-start-line="21" selection-start-column="17" selection-end-line="21" selection-end-column="30" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/http-foundation/Response.php">
+    <entry file="file://$PROJECT_DIR$/lesson14/code.js">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="345">
-          <caret line="63" column="10" lean-forward="false" selection-start-line="63" selection-start-column="10" selection-end-line="63" selection-end-column="10" />
-          <folding />
+        <state relative-caret-position="135">
+          <caret line="9" column="2" lean-forward="true" selection-start-line="9" selection-start-column="2" selection-end-line="9" selection-end-column="2" />
+          <folding>
+            <marker date="1496691312000" expanded="true" signature="86:616" ph="..." />
+            <marker date="1496691312000" expanded="true" signature="152:609" ph="..." />
+            <marker date="1496691312000" expanded="true" signature="189:324" ph="..." />
+            <marker date="1496691312000" expanded="true" signature="224:271" ph="..." />
+            <marker date="1496691312000" expanded="true" signature="369:416" ph="..." />
+            <marker date="1496691312000" expanded="true" signature="458:600" ph="..." />
+            <marker date="1496691312000" expanded="true" signature="485:586" ph="..." />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/src/ProjectStore.php">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/silex/silex/src/Silex/ControllerCollection.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="162">
-          <caret line="52" column="0" lean-forward="false" selection-start-line="52" selection-start-column="0" selection-end-line="52" selection-end-column="0" />
+        <state relative-caret-position="115">
+          <caret line="89" column="23" lean-forward="false" selection-start-line="88" selection-start-column="6" selection-end-line="89" selection-end-column="23" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson03/code.js">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/pimple/pimple/src/Pimple/Container.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="225">
-          <caret line="15" column="3" lean-forward="true" selection-start-line="15" selection-start-column="3" selection-end-line="15" selection-end-column="3" />
+        <state relative-caret-position="250">
+          <caret line="104" column="0" lean-forward="false" selection-start-line="104" selection-start-column="0" selection-end-line="104" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson06/code.js">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/silex/silex/src/Silex/Application.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="181">
-          <caret line="25" column="19" lean-forward="true" selection-start-line="25" selection-start-column="19" selection-end-line="25" selection-end-column="19" />
+        <state relative-caret-position="175">
+          <caret line="131" column="0" lean-forward="false" selection-start-line="131" selection-start-column="0" selection-end-line="131" selection-end-column="0" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson19/src/ProjectManager.php">
+    <entry file="file://$PROJECT_DIR$/lesson19/vendor/symfony/http-kernel/HttpKernel.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="420">
-          <caret line="28" column="35" lean-forward="false" selection-start-line="28" selection-start-column="35" selection-end-line="28" selection-end-column="35" />
+        <state relative-caret-position="132">
+          <caret line="154" column="15" lean-forward="true" selection-start-line="154" selection-start-column="15" selection-end-line="154" selection-end-column="15" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson08/index.html">
+    <entry file="file://$PROJECT_DIR$/lesson19/src/ProjectManager.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="270">
-          <caret line="18" column="6" lean-forward="true" selection-start-line="18" selection-start-column="6" selection-end-line="18" selection-end-column="6" />
+        <state relative-caret-position="314">
+          <caret line="27" column="39" lean-forward="true" selection-start-line="27" selection-start-column="39" selection-end-line="27" selection-end-column="39" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson09/code.js">
+    <entry file="file://$PROJECT_DIR$/lesson19/index.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="240">
-          <caret line="16" column="8" lean-forward="true" selection-start-line="16" selection-start-column="8" selection-end-line="16" selection-end-column="8" />
-          <folding>
-            <marker date="1496681312000" expanded="true" signature="126:391" ph="..." />
-            <marker date="1496681312000" expanded="true" signature="157:324" ph="..." />
-            <marker date="1496681312000" expanded="true" signature="356:380" ph="..." />
-          </folding>
+        <state relative-caret-position="135">
+          <caret line="9" column="0" lean-forward="false" selection-start-line="9" selection-start-column="0" selection-end-line="9" selection-end-column="0" />
+          <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lesson08/code.js">
+    <entry file="file://$PROJECT_DIR$/lesson19/project.json">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="342">
-          <caret line="25" column="0" lean-forward="true" selection-start-line="25" selection-start-column="0" selection-end-line="25" selection-end-column="0" />
-          <folding>
-            <marker date="1496681312000" expanded="true" signature="113:180" ph="..." />
-            <marker date="1496681312000" expanded="true" signature="144:174" ph="..." />
-          </folding>
+        <state relative-caret-position="242">
+          <caret line="25" column="0" lean-forward="false" selection-start-line="21" selection-start-column="0" selection-end-line="25" selection-end-column="0" />
+          <folding />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/lesson19/code.js">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="429">
-          <caret line="56" column="5" lean-forward="true" selection-start-line="56" selection-start-column="5" selection-end-line="56" selection-end-column="5" />
-          <folding />
+        <state relative-caret-position="281">
+          <caret line="54" column="10" lean-forward="true" selection-start-line="53" selection-start-column="11" selection-end-line="54" selection-end-column="10" />
+          <folding>
+            <marker date="1502349249000" expanded="true" signature="597:924" ph="..." />
+            <marker date="1502349249000" expanded="true" signature="645:722" ph="..." />
+            <marker date="1502349249000" expanded="true" signature="654:711" ph="..." />
+            <marker date="1502349249000" expanded="true" signature="732:915" ph="..." />
+            <marker date="1502349249000" expanded="true" signature="819:904" ph="..." />
+          </folding>
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/lesson19/index.html">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="264">
-          <caret line="29" column="67" lean-forward="false" selection-start-line="29" selection-start-column="67" selection-end-line="29" selection-end-column="67" />
+        <state relative-caret-position="238">
+          <caret line="20" column="18" lean-forward="false" selection-start-line="20" selection-start-column="18" selection-end-line="20" selection-end-column="18" />
           <folding />
         </state>
       </provider>

+ 46 - 0
lesson19/code.js

@@ -30,6 +30,42 @@ class Errors {
   }
 }
 
+Vue.component('list', {
+  methods: {
+  },
+
+  data() {
+    return {
+    };
+  },
+
+  template: `
+<table class="table">
+  <caption>List of projects</caption>
+  <thead>
+    <tr>
+      <th>Name</th>
+      <th>Description</th>
+    </tr>
+  </thead>
+  <tbody>
+    <!-- props are directly available by name -->
+    <tr v-for="project in projects">
+      <td>{{ project.name }}</td>
+      <td>{{ project.description }}</td>
+    </tr>
+  </tbody>
+</table>  
+`,
+
+  props: {
+    'projects': {
+      default: () => { return {}; },
+      // type: Object,
+    }
+  },
+});
+
 const app = new Vue({
   el: '#root',
 
@@ -37,9 +73,19 @@ const app = new Vue({
     name: '',
     description: '',
     errors: new Errors(),
+    projects: [],
+  },
+
+  beforeMount() {
+    this.$http.get('index.php/projects')
+      .then(this.onGotProjects);
   },
 
   methods: {
+    onGotProjects(e) {
+      this.projects = e.data;
+    },
+
     /**
      *
      * @param {Event} e

+ 4 - 0
lesson19/index.html

@@ -17,6 +17,10 @@
     </nav>
 
     <div id="root" class="container">
+      <list :projects="projects">
+        <template></template>
+      </list>
+
       <form method="post" action="projects" @submit.prevent="onSubmit" @keydown="errors.clear($event.target.name)">
         <div class="control">
           <label for="name" class="label">Project name:</label>

+ 10 - 5
lesson19/index.php

@@ -1,24 +1,29 @@
 <?php
 
-use Lesson19\ProjectManager;
-use Lesson19\ProjectStore;
+namespace Lesson19;
+
 use Pimple\Container as Pimple;
 use Pimple\Psr11\Container;
+use Silex\Application;
 use Symfony\Component\HttpFoundation\Request;
 
 require_once __DIR__ . '/vendor/autoload.php';
 
-$app = new Silex\Application();
+$app = new Application();
 $container = new Container($dic = new Pimple());
 $dic[ProjectStore::NAME] = ProjectStore::instantiate($container);
 $dic[ProjectManager::NAME] = ProjectManager::instantiate($container);
 
-/** @var \ProjectManager $projectsManager */
+/** @var \Lesson19\ProjectManager $projectsManager */
 $projectsManager = $container->get(ProjectManager::NAME);
 
-$app->match('/projects', function (Request $req) use($projectsManager) {
+$app->get('/projects', function () use($projectsManager) {
+  return $projectsManager->listAll();
+});
+$app->post('/projects', function (Request $req) use($projectsManager) {
   $data = json_decode($req->getContent());
   return $projectsManager->createProject($data->name, $data->description);
 });
 
+
 $app->run();

+ 14 - 0
lesson19/readme-laravel.md

@@ -0,0 +1,14 @@
+To use the provided Laravel backend instead
+
+1. `git clone https://github.com/laracasts/Vue-Forms`
+1. `cd Vue-Forms`
+1. `composer install`
+    - This installs the vendor folder and other packages which are not included in above repository
+1. `npm install` or `yarn`
+    - This installs the `node_modules`  folder 
+1. `cp .env.example .env`
+1. Edit database details in `.env` file if required.
+1. `php artisan key:generate`
+    - This creates the missing `APP_KEY` in the `.env` file.
+1. `php artisan config:clear`
+1. `php artisan migrate`

+ 5 - 0
lesson19/src/ProjectManager.php

@@ -23,6 +23,11 @@ class ProjectManager implements ContainerInjectionInterface {
     return new static($store);
   }
 
+  public function listAll() {
+    $projects = $this->store->all();
+    return new JsonResponse($projects);
+  }
+
   public function createProject(string $name, string $description) {
     try {
       $this->store->create(new Project($name, $description));