From 2d5da6a712f662b9fc9407b54f65c628d260f4e4 Mon Sep 17 00:00:00 2001 From: vagrant Date: Tue, 17 Apr 2018 13:39:05 +0000 Subject: [PATCH] api/user --- app/Http/Controllers/Api/UsersController.php | 14 ++- app/Transformers/UserTransformer.php | 25 ++++ composer.json | 1 + composer.lock | 45 +++++++- config/api.php | 2 +- config/auth.php | 3 - routes/api.php | 18 ++- .../855f92484c8c414d36c1b25cb24876e30229cbbf | Bin 12155 -> 0 bytes .../f02945dbe518bf3b79c1267d9959c48574b2ebfb | Bin 6744 -> 0 bytes .../f947913e0c6993749ff54a26039f2d18c8a26175 | Bin 15114 -> 0 bytes ...5b8d01573453f32cedee1224bbb2cc30fcb249.php | 48 -------- ...0bcf0e3348cb9f7a5eb864aea95996ac7ad282.php | 109 ------------------ ...5d1ba2b20ccd7d42b2919201148f1e01c28d73.php | 10 -- ...42c9b1c8e24f8d022bdd55b1498079b24d9021.php | 39 ------- ...d06ac739ddc554edcfca8cd4f2da4a4e7fd592.php | 42 ------- ...d300dc63ebddaa0de643e64d30719314714153.php | 36 ------ ...8ea148df480243f7f156463dfce0d226b068b4.php | 23 ---- ...504c820c85bb948940feaab9d0a258481cec51.php | 55 --------- ...420f35e4b2ff33d7b923435c423d7a53c9bff7.php | 50 -------- ...ef49e9deab90c7f79e4f2472317be608f1d16a.php | 43 ------- ...76c5978be7cfb7fbcc4c290a418d4bd0b41662.php | 83 ------------- 21 files changed, 101 insertions(+), 545 deletions(-) create mode 100644 app/Transformers/UserTransformer.php delete mode 100644 storage/framework/cache/data/85/5f/855f92484c8c414d36c1b25cb24876e30229cbbf delete mode 100644 storage/framework/cache/data/f0/29/f02945dbe518bf3b79c1267d9959c48574b2ebfb delete mode 100644 storage/framework/cache/data/f9/47/f947913e0c6993749ff54a26039f2d18c8a26175 delete mode 100644 storage/framework/views/085b8d01573453f32cedee1224bbb2cc30fcb249.php delete mode 100644 storage/framework/views/710bcf0e3348cb9f7a5eb864aea95996ac7ad282.php delete mode 100644 storage/framework/views/745d1ba2b20ccd7d42b2919201148f1e01c28d73.php delete mode 100644 storage/framework/views/7a42c9b1c8e24f8d022bdd55b1498079b24d9021.php delete mode 100644 storage/framework/views/a2d06ac739ddc554edcfca8cd4f2da4a4e7fd592.php delete mode 100644 storage/framework/views/a4d300dc63ebddaa0de643e64d30719314714153.php delete mode 100644 storage/framework/views/ae8ea148df480243f7f156463dfce0d226b068b4.php delete mode 100644 storage/framework/views/c6504c820c85bb948940feaab9d0a258481cec51.php delete mode 100644 storage/framework/views/c9420f35e4b2ff33d7b923435c423d7a53c9bff7.php delete mode 100644 storage/framework/views/f1ef49e9deab90c7f79e4f2472317be608f1d16a.php delete mode 100644 storage/framework/views/f376c5978be7cfb7fbcc4c290a418d4bd0b41662.php diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 120b236..784e94b 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Api; use App\Models\User; +use App\Transformers\UserTransformer; use Illuminate\Http\Request; use App\Http\Requests\Api\UserRequest; @@ -30,6 +31,17 @@ public function store ( UserRequest $request ) // 清除验证码缓存 \Cache::forget ( $request->verification_key ); - return $this->response->created (); + return $this->response->item ( $user , new UserTransformer() ) + ->setMeta ( [ + 'access_token' => \Auth::guard ( 'api' )->fromUser ( $user ) , + 'token_type' => 'Bearer' , + 'expires_in' => \Auth::guard ( 'api' )->factory ()->getTTL () * 60 + ] ) + ->setStatusCode ( 201 ); + } + + public function me () + { + return $this->response->item ( $this->user () , new UserTransformer() ); } } diff --git a/app/Transformers/UserTransformer.php b/app/Transformers/UserTransformer.php new file mode 100644 index 0000000..edd4aaa --- /dev/null +++ b/app/Transformers/UserTransformer.php @@ -0,0 +1,25 @@ + $user->id , + 'name' => $user->name , + 'email' => $user->email , + 'avatar' => $user->avatar , + 'introduction' => $user->introduction , + 'bound_phone' => $user->phone ? true : false , + 'bound_wechat' => ( $user->weixin_unionid || $user->weixin_openid ) ? true : false , + 'last_actived_at' => $user->last_actived_at->toDateTimeString () , + 'created_at' => $user->created_at->toDateTimeString () , + 'updated_at' => $user->updated_at->toDateTimeString () , + ]; + } +} \ No newline at end of file diff --git a/composer.json b/composer.json index fe7363a..77bb0c4 100644 --- a/composer.json +++ b/composer.json @@ -16,6 +16,7 @@ "laravel/framework": "5.5.*", "laravel/horizon": "~1.0", "laravel/tinker": "~1.0", + "liyu/dingo-serializer-switch": "^0.3.0", "mews/captcha": "~2.0", "mews/purifier": "~2.0", "overtrue/easy-sms": "^1.0", diff --git a/composer.lock b/composer.lock index 890258f..5175e08 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "2bda9ade989bb5ebb1a8d46e9323fc39", + "content-hash": "07480550a7ab1d8b10962d497d74dacb", "packages": [ { "name": "cakephp/chronos", @@ -1993,6 +1993,49 @@ ], "time": "2016-08-17T00:36:58+00:00" }, + { + "name": "liyu/dingo-serializer-switch", + "version": "v0.3.0", + "source": { + "type": "git", + "url": "https://github.com/liyu001989/dingo-serializer-switch.git", + "reference": "82e23a7c9f46f7ec05ae9b5999c618f5c21a3290" + }, + "dist": { + "type": "zip", + "url": "https://files.phpcomposer.com/files/liyu001989/dingo-serializer-switch/82e23a7c9f46f7ec05ae9b5999c618f5c21a3290.zip", + "reference": "82e23a7c9f46f7ec05ae9b5999c618f5c21a3290", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Liyu\\Dingo\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Liyu\\Dingo\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Yu Li", + "email": "liyu001989@gmail.com" + } + ], + "description": "A middleware to switch dingo serializer", + "time": "2018-01-06T05:09:05+00:00" + }, { "name": "mews/captcha", "version": "2.1.8", diff --git a/config/api.php b/config/api.php index d9f9c57..b4c060c 100644 --- a/config/api.php +++ b/config/api.php @@ -169,7 +169,7 @@ */ 'auth' => [ - + 'jwt' => 'Dingo\Api\Auth\Provider\JWT', ] , /* diff --git a/config/auth.php b/config/auth.php index 3c6abbc..3db714c 100644 --- a/config/auth.php +++ b/config/auth.php @@ -47,9 +47,6 @@ ] , ] , - 'auth' => [ - 'jwt' => 'Dingo\Api\Auth\Provider\JWT' , - ] , /* |-------------------------------------------------------------------------- diff --git a/routes/api.php b/routes/api.php index 50afda8..310a7d6 100644 --- a/routes/api.php +++ b/routes/api.php @@ -16,7 +16,8 @@ $api = app ( 'Dingo\Api\Routing\Router' ); $api->version ( 'v1' , [ - 'namespace' => 'App\Http\Controllers\Api' , + 'namespace' => 'App\Http\Controllers\Api' , + 'middleware' => 'serializer:array' ] , function ( $api ) { $api->group ( [ @@ -51,6 +52,21 @@ // 删除token $api->delete ( 'authorizations/current' , 'AuthorizationsController@destroy' ) ->name ( 'api.authorizations.destroy' ); + } ); + + + $api->group ( [ + 'middleware' => 'api.throttle' , + 'limit' => config ( 'api.rate_limits.access.limit' ) , + 'expires' => config ( 'api.rate_limits.access.expires' ) , + ] , function ( $api ) { + // 游客可以访问的接口 + // 需要 token 验证的接口 + $api->group ( [ 'middleware' => 'api.auth' ] , function ( $api ) { + // 当前登录用户信息 + $api->get ( 'user' , 'UsersController@me' ) + ->name ( 'api.user.show' ); + } ); } ); } ); diff --git a/storage/framework/cache/data/85/5f/855f92484c8c414d36c1b25cb24876e30229cbbf b/storage/framework/cache/data/85/5f/855f92484c8c414d36c1b25cb24876e30229cbbf deleted file mode 100644 index a96cbed4100b65ea0799812081512213c9bf54b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12155 zcmeHNTW{Jh6z)%%@;Ipy2~b-1v1_Gi>RNSsL_&tRU@f=Ch7MKy_kG7sLg=6>Ed@gJ zFsZYhbB@pDI~U`&z2-@$={3%7So4fI--BQr%7|;x{l+!#b0xZ$LHsZlk?vl^K_CWN z#*xEZ_N3S;bB?|qNi9OPm(pxL8;B0UkTSzbZ~_R8FkCy9vs@^R=L>hh&RFbzgR zT~4e4b0#h?z|M;yB8V`1Gi1&B-Xuo!st=ju}Dh(WVb0~iVcFY zg8>6`KL=^M1vGiF0JzJsqT*Wn`G|eRLEhJ)shA&ikj0PMRC&PVBu#c0ec0Q;D|LvsQ_Lm70Na55|8)r zwIMd*s)S&;a>4u%b0Mk@d%vZiT~;u``0_|tpT?&P8Um)x1kF5QZZ%fP`ZtuN>e4g^ znvd^5J$OyI14YLxXv`aJ7UA%LzuJXyb-#heMMWga*vhEbN^)eutx1Fc2x>H!uDKwvr9`R5k ze5rd%X!_~SUbhPSEPLfauq3Q Ves8a^ibmzrWZf%lt5=xK{sByyDtrI{ diff --git a/storage/framework/cache/data/f0/29/f02945dbe518bf3b79c1267d9959c48574b2ebfb b/storage/framework/cache/data/f0/29/f02945dbe518bf3b79c1267d9959c48574b2ebfb deleted file mode 100644 index 3372e5afd571aded4a3293f29bd1139a900aaa8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6744 zcmeI0OK;ma5P=j{Hcn^r=l+Y>{?bw2Ss)z@VhDH3&s2BxTnP^4~inx{2ar zA)qy&ix1=sIWK-5O*)@UFE3{E`Nc;u{YS*_lxix}(!=svdYMTF%Qwp0HK6_S$|wc7 zN26nrihCz6Mf~FB3-nOAcp=5PxJPle_$bo3h+oz9@`EWrx#fG*x3QR9vPzn^I%`x) zW(rts64aa^EsvfTQKSneW+GOsx_EGcY|CX{!s-_GG3}*O+LTsinOm_C8Q{d^ygfV! z!uJ|2tWdAWp~eGA(6O`G*+H8u&yCgxhiH+mulDXv@kzlm3IJR4-;+jdv66Ow6O5RM z7>m}Lv-V=L?f-pE8cvXTsC~P~QaZO#Q4CRU;zibachRcs(3c#9GjUH|rX)*t@#2+f zSpRV++)#u4BsU>KbGn8chVSS+ITub%$?~0apCPB))c(o><&td7C@~>wbiVZ7VisZ| z$?tm#U2r7?{wWcpLRq*$>&W!z8JN1|vCoag5()(JB$GhEbR3Omdc{xJ8He*VH z!dzx1!K#J=eX<2bzjqC~yGB+?CDB-LNnw<+;rCZSDP(N>N>Uiw6i^77y6CKN#6mq8 ziyJCi%H65^6Y`vwQg66qf8{?EWG>rOKVRgCbR_v@P>y-^t+7=%dYt;Y23>T;>1DAv zx>|aAVD8P9DyJ(zxh4UVIj~!P5Z%2{uNIVKEOd8*AKo;4=93>Ot$VD%d0Ex89;!Cj zP-0PlelANlZ_(ia6^B<6&fYZA7F^qsX~g8AauD%L;>82k@xUPp$jNeOLdJJFG$Btu zS+gERudOk+F8Y#}SXH2+uSYDSIQ&QY#Y0^h9sNuFYTFog8XqQ7r}1$mf-2l7 zH`Tabiu^Id1~T+RhUq|tlP1ILhzt{IGe5Xd^h#~PdKtZkjWsTMcif4vT!#>)q2{}7 zMEd2!A2x5GL_d_64U{-(O7J|U`^Ccj!wo1;?ZdS(DvXRe{lodwcghchN^0Hq4qKy| z+SAv2l{C75L}rO>e3CabEHMSrSBpj-oY09hl#%VUiTl=m#w91=#6X;Wh%+CEbJD~) zKPC?0=h{+Vf;2~qJ{uY$vVR@s%%6X=(B!<>SkR*ke~i~M2Mau!O&%HKTJ|`eve9s@ RH_H6Ah7V-vgDejZKLN5#4a5Kd diff --git a/storage/framework/cache/data/f9/47/f947913e0c6993749ff54a26039f2d18c8a26175 b/storage/framework/cache/data/f9/47/f947913e0c6993749ff54a26039f2d18c8a26175 deleted file mode 100644 index f3b33e316c0c5bdb7232f40b4db4bbd3d878ee11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15114 zcmeHOSyS6c5YA6gx$=~%U`w`aBOW%avm_*3fsm`Ha*d_I8jv*d96q4(-}jptn>geG z780n{LsDoib@zPJ{i&zzhe5Nm8Z^SrZWOFWwaqNkIV*^wM+dqrxll(vo@F#vj2E@Y zkIrS(jcSjcJYtIGvbIK|c6837#@cS=hf!_4ERVK%LNj@ED5cdPm^!i30u8slx*tS2Z?0~rSZ!-W<^DZvI> zQ41B===?$#7Mbn6*nLdF-|HDWBiky#hH|lvo7iZgA@#%+^vKanlN4#Tn5}S%m_m~#cJ0>y9nDpQaI3B4~UO{Ed07I`7gh~TnoqHqAyaZ1I9V_+)*x7KuyI<7WWbBhbas< z=MSz+&@!7Xb=j!y3}6^XKOr-$$D##cz-s0l{X(0Vf59=_jF`YKeS~S_w~PuI5o9os zbLZ5bONTyqYP<7hJe`(I&_4JHNSKS7U@j*7n&60GDUoTv6!e%)?ZRkXEPToJ^{vBn znjJHmB}>!LY9)t#4e6?=TSeWjN!<(+2lgCs2Rh-t_9-wsRN!p~aBc+u3<3eQIi3H8 zz8RX9kyBPYB>pxEcgK6-q&ti4`NF}zUH-NjwYp~ITjOssq-p8#aKA?#Q zhpRl}l%&T>NxY1~=W&nd8#6PY=6hT>0F^Y~C%>d@6$C2?-YopGp zlfQS9aeGQ02veJ`>*w23Mc>SB#MD}#+UpW&TZW{X^tAFw#zvat9=Ln6~ ztIvH}Q0i?6X70mDqO2`L{i$N6#!cEJ9Z8U< zyXBmm-@al_uEKGJ^tEk*PqH>=<{|l*AJfZ*q diff --git a/storage/framework/views/085b8d01573453f32cedee1224bbb2cc30fcb249.php b/storage/framework/views/085b8d01573453f32cedee1224bbb2cc30fcb249.php deleted file mode 100644 index f99d7f0..0000000 --- a/storage/framework/views/085b8d01573453f32cedee1224bbb2cc30fcb249.php +++ /dev/null @@ -1,48 +0,0 @@ - - - -
-
- -
活跃用户
-
- addLoop($__currentLoopData); foreach($__currentLoopData as $active_user): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?> - -
- -
- -
- name); ?> -
-
- popLoop(); $loop = $__env->getLastLoop(); ?> - -
-
- - - -
-
- -
资源推荐
-
- addLoop($__currentLoopData); foreach($__currentLoopData as $link): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?> - -
- title); ?> -
-
- popLoop(); $loop = $__env->getLastLoop(); ?> - -
-
- \ No newline at end of file diff --git a/storage/framework/views/710bcf0e3348cb9f7a5eb864aea95996ac7ad282.php b/storage/framework/views/710bcf0e3348cb9f7a5eb864aea95996ac7ad282.php deleted file mode 100644 index 11c51d0..0000000 --- a/storage/framework/views/710bcf0e3348cb9f7a5eb864aea95996ac7ad282.php +++ /dev/null @@ -1,109 +0,0 @@ - \ No newline at end of file diff --git a/storage/framework/views/745d1ba2b20ccd7d42b2919201148f1e01c28d73.php b/storage/framework/views/745d1ba2b20ccd7d42b2919201148f1e01c28d73.php deleted file mode 100644 index 3f67426..0000000 --- a/storage/framework/views/745d1ba2b20ccd7d42b2919201148f1e01c28d73.php +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/storage/framework/views/7a42c9b1c8e24f8d022bdd55b1498079b24d9021.php b/storage/framework/views/7a42c9b1c8e24f8d022bdd55b1498079b24d9021.php deleted file mode 100644 index 9180020..0000000 --- a/storage/framework/views/7a42c9b1c8e24f8d022bdd55b1498079b24d9021.php +++ /dev/null @@ -1,39 +0,0 @@ -startSection('title', isset($category) ? $category->name : '话题列表'); ?> - -startSection('content'); ?> - -
-
- - - - -
- - - -
- - make('topics._topic_list', ['topics' => $topics], array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> - - render(); ?> - -
-
-
- - -
- -stopSection(); ?> -make('layouts.app', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> \ No newline at end of file diff --git a/storage/framework/views/a2d06ac739ddc554edcfca8cd4f2da4a4e7fd592.php b/storage/framework/views/a2d06ac739ddc554edcfca8cd4f2da4a4e7fd592.php deleted file mode 100644 index 9abdd02..0000000 --- a/storage/framework/views/a2d06ac739ddc554edcfca8cd4f2da4a4e7fd592.php +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - <?php echo $__env->yieldContent('title', 'LaraBBS'); ?> - <?php echo e(setting('site_name', 'Laravel 进阶教程')); ?> - - - - - - yieldContent('styles'); ?> - - - -
- - make('layouts._header', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> - -
- - make('layouts._message', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> - yieldContent('content'); ?> - -
- - make('layouts._footer', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> -
- -isLocal()): ?> - make('sudosu::user-selector', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> - - - -yieldContent('scripts'); ?> - - \ No newline at end of file diff --git a/storage/framework/views/a4d300dc63ebddaa0de643e64d30719314714153.php b/storage/framework/views/a4d300dc63ebddaa0de643e64d30719314714153.php deleted file mode 100644 index 677de30..0000000 --- a/storage/framework/views/a4d300dc63ebddaa0de643e64d30719314714153.php +++ /dev/null @@ -1,36 +0,0 @@ -hasPages()): ?> -
    - - onFirstPage()): ?> -
  • «
  • - -
  • - - - - addLoop($__currentLoopData); foreach($__currentLoopData as $element): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?> - - -
  • - - - - - addLoop($__currentLoopData); foreach($__currentLoopData as $page => $url): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?> - currentPage()): ?> -
  • - -
  • - - popLoop(); $loop = $__env->getLastLoop(); ?> - - popLoop(); $loop = $__env->getLastLoop(); ?> - - - hasMorePages()): ?> -
  • - -
  • »
  • - -
- diff --git a/storage/framework/views/ae8ea148df480243f7f156463dfce0d226b068b4.php b/storage/framework/views/ae8ea148df480243f7f156463dfce0d226b068b4.php deleted file mode 100644 index 9589a30..0000000 --- a/storage/framework/views/ae8ea148df480243f7f156463dfce0d226b068b4.php +++ /dev/null @@ -1,23 +0,0 @@ - -
- - - -
- - - -
- - - -
- - - -
- - - -
- \ No newline at end of file diff --git a/storage/framework/views/c6504c820c85bb948940feaab9d0a258481cec51.php b/storage/framework/views/c6504c820c85bb948940feaab9d0a258481cec51.php deleted file mode 100644 index 7c75ab4..0000000 --- a/storage/framework/views/c6504c820c85bb948940feaab9d0a258481cec51.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -
暂无数据 ~_~
- \ No newline at end of file diff --git a/storage/framework/views/c9420f35e4b2ff33d7b923435c423d7a53c9bff7.php b/storage/framework/views/c9420f35e4b2ff33d7b923435c423d7a53c9bff7.php deleted file mode 100644 index 2997936..0000000 --- a/storage/framework/views/c9420f35e4b2ff33d7b923435c423d7a53c9bff7.php +++ /dev/null @@ -1,50 +0,0 @@ - - - -
-
- -
- - -
- - \ No newline at end of file diff --git a/storage/framework/views/f1ef49e9deab90c7f79e4f2472317be608f1d16a.php b/storage/framework/views/f1ef49e9deab90c7f79e4f2472317be608f1d16a.php deleted file mode 100644 index f47ef8f..0000000 --- a/storage/framework/views/f1ef49e9deab90c7f79e4f2472317be608f1d16a.php +++ /dev/null @@ -1,43 +0,0 @@ -
- addLoop($__currentLoopData); foreach($__currentLoopData as $index => $reply): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?> -
-
- - <?php echo e($reply->user->name); ?> - -
- -
-
- - user->name); ?> - - - - created_at->diffForHumans()); ?> - - - check('destroy', $reply)): ?> - -
- - - - - -
-
- -
-
- content; ?> - -
-
-
-
- popLoop(); $loop = $__env->getLastLoop(); ?> -
\ No newline at end of file diff --git a/storage/framework/views/f376c5978be7cfb7fbcc4c290a418d4bd0b41662.php b/storage/framework/views/f376c5978be7cfb7fbcc4c290a418d4bd0b41662.php deleted file mode 100644 index ec2c02c..0000000 --- a/storage/framework/views/f376c5978be7cfb7fbcc4c290a418d4bd0b41662.php +++ /dev/null @@ -1,83 +0,0 @@ -startSection('title', $topic->title); ?> -startSection('description', $topic->excerpt); ?> - -startSection('content'); ?> - -
- - - -
-
-
-

- title); ?> - -

- - - -
- body; ?> - -
- - check('update', $topic)): ?> -
-
- - 编辑 - - -
- - - - - -
-
- - -
-
- -
-
- renderWhen(Auth::check(), 'topics._reply_box', ['topic' => $topic], array_except(get_defined_vars(), array('__data', '__path'))); ?> - make('topics._reply_list', ['replies' => $topic->replies()->with('user')->get()], array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> -
-
-
-
-stopSection(); ?> -make('layouts.app', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> \ No newline at end of file